Python 如果字典值是一个列表,如何计算该列表中的项?
我有一本这样的字典:Python 如果字典值是一个列表,如何计算该列表中的项?,python,python-3.x,list,dictionary,Python,Python 3.x,List,Dictionary,我有一本这样的字典: {'A': ['red', 'red', 'blue'], 'B': ['red', 'green'], 'C': ['blue', 'green'], ....} dict = {'A': ['red', 'red', 'blue'], 'B': ['red', 'green'], 'C': ['blue', 'green']} new_dict = {} for key in dict.keys(): new_dict[key] = {} f
{'A': ['red', 'red', 'blue'],
'B': ['red', 'green'],
'C': ['blue', 'green'], ....}
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
任何提示都将不胜感激 您可以使用字典的
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
您可以使用
集合创建dict
。计数器
:
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
您可以使用
这将输出:
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])
您可以尝试以下方法:
{'A': ['red', 'red', 'blue'],
'B': ['red', 'green'],
'C': ['blue', 'green'], ....}
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}}
试试这个:
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
非常感谢,它很有效!你能解释一下连接和格式部分吗?以及为什么“键:”在计数中?连接只是把所有颜色/计数放在一行中。“key:”用于在行的开头打印key,比如“A:”,“B:”,等等。基本上,我会提取信息并以所需格式打印出来。谢谢你的解释,但我指的是这里的key:count={key:Counter(colors)for key,colors in data.items()}这是因为我在构建一个字典,使用
数据
中的键作为键,并使用另一个字典作为值,颜色作为键,出现次数作为值