我有一本这样的字典:
{'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
任何提示将不胜感激!
答案 0 :(得分:2)
可以使用字典的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
答案 1 :(得分:2)
您可以使用dict
创建一个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
答案 2 :(得分:2)
尝试一下:
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
答案 3 :(得分:0)
您可以使用collections.Counter
for key in dic:
c = Counter(dic[key])
print(key + ':')
print(c.keys())
print(c.values())
这将输出:
A:
dict_keys(['red', 'blue'])
dict_values([2, 1])
B:
dict_keys(['red', 'green'])
dict_values([1, 1])
C:
dict_keys(['blue', 'green'])
dict_values([1, 1])
答案 4 :(得分:0)
您可以尝试以下操作:
dict = {'A': ['red', 'red', 'blue'],
'B': ['red', 'green'],
'C': ['blue', 'green']}
new_dict = {}
for key in dict.keys():
new_dict[key] = {}
for item in dict[key]:
if item not in new_dict[key].keys():
new_dict[key][item] = 1
else:
new_dict[key][item] += 1
print(new_dict)
输出将是:
{'A': {'red': 2, 'blue': 1}, 'B': {'red': 1, 'green': 1}, 'C': {'blue': 1, 'green': 1}}