为了账号安全,请及时绑定邮箱和手机立即绑定

如果字典值是一个列表,如何计算该列表中的项目?

如果字典值是一个列表,如何计算该列表中的项目?

狐的传说 2022-01-11 19:59:40
我有一本这样的字典:{'A': ['red', 'red', 'blue'], 'B': ['red', 'green'], 'C': ['blue', 'green'], ....}如何计算每个列表中项目的出现次数?期望的结果如下:A: red 2, blue 1B: red 1, green 1C: blue 1, green 1任何提示将非常感谢!
查看完整描述

3 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

您可以按以下方式执行此操作,使用keys()字典的count()方法和列表中的方法来计算每个元素的出现次数:


inDict = {'A': ['red', 'red', 'blue'], 'B': ['red', 'green'], 'C': ['blue', 'green']}


for key in inDict.keys():

    print(key + ': ', end=" ")

    print(", ".join([elem + ' ' + str(inDict[key].count(elem))  for elem in set(inDict[key])]))

结果:


A:  blue 1, red 2

B:  green 1, red 1

C:  green 1, blue 1


查看完整回答
反对 回复 2022-01-11
?
噜噜哒

TA贡献1784条经验 获得超7个赞

您可以创建一个dictwith collections.Counters:


from collections import Counter


d = {'A': ['red', 'red', 'blue'],

     'B': ['red', 'green'],

     'C': ['blue', 'green']}


counter_dict = { k: Counter(v) for k, v in d.items()}

for k, v in counter_dict.items():

    print(f'{k}:', *(f'{i} {j}' for i, j in v.items()))


>>>A: red 2 blue 1

   B: red 1 green 1

   C: blue 1 green 1


查看完整回答
反对 回复 2022-01-11
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

试试这个:


data = {

    'A': ['red', 'red', 'blue'],

    'B': ['red', 'green'],

    'C': ['blue', 'green']

}


from collections import Counter


count = { key: Counter(colors) for key, colors in data.items() }

for key, colors in count.items():

    print(key + ':', ', '.join('{} {}'.format(c, n) for c, n in colors.items()))

它会打印:


A:  blue 1, red 2

C:  blue 1, green 1

B:  green 1, red 1


查看完整回答
反对 回复 2022-01-11
  • 3 回答
  • 0 关注
  • 216 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号