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

时间:2019-04-16 16:05:08

标签: python python-3.x list dictionary

我有一本这样的字典:

{'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

任何提示将不胜感激!

5 个答案:

答案 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}}