猿问

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

我有一本这样的字典:


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

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

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

如何计算每个列表中项目的出现次数?


期望的结果如下:


A: red 2, blue 1

B: red 1, green 1

C: blue 1, green 1

任何提示将非常感谢!


狐的传说
浏览 217回答 3
3回答

郎朗坤

您可以按以下方式执行此操作,使用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 2B:  green 1, red 1C:  green 1, blue 1

噜噜哒

您可以创建一个dictwith collections.Counters:from collections import Counterd = {'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

犯罪嫌疑人X

试试这个:data = {    'A': ['red', 'red', 'blue'],    'B': ['red', 'green'],    'C': ['blue', 'green']}from collections import Countercount = { 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 2C:  blue 1, green 1B:  green 1, red 1
随时随地看视频慕课网APP

相关分类

Python
我要回答