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()}这是因为我在构建一个字典,使用
数据
中的键作为键,并使用另一个字典作为值,颜色作为键,出现次数作为值