将dicts列表中所有键的所有值的计数制成表格



我有一个这样的列表:

[{'migs_ba': 'O',
'migs_eu': 'O',
'migs_org': 'O',
'migs_pl': 'O',
'migs_vi': 'O',
'mimag': 'EM',
'mimarks_c': 'O',
'mimarks_s': 'EM',
'mims': 'EM',
'misag': 'EM',
'miuvig': 'EM'},
{'migs_ba': 'O',
'migs_eu': 'O',
'migs_org': 'O',
'migs_pl': 'O',
'migs_vi': 'O',
'mimag': 'EM',
'mimarks_c': 'O',
'mimarks_s': 'EM',
'mims': 'EM',
'misag': 'EM',
'miuvig': 'EM'}...
]

我想把所有作为dicts列表中任何键的值出现的字符串都制成表格,比如这个

{"O": 12, "EM": 10}

考虑到您将列表命名为"元素";

from collections import Counter
counter = Counter([val for ele in elements for val in ele.values()])
print(counter)

输出

Counter({'O': 12, 'EM': 10})

注意,计数器继承自dict,并具有它的所有方法和行为

逻辑

对于列表中所有字典中的每个值,测试值是否为"O"或"EM">

result={
'EM':0,
'O':0,
}
for dict_ in lolo:
for value in dict_.values():
if value == 'EM':
result['EM'] += 1
else: 
result['O'] += 1

或者更通用:

for dict_ in lolo:
for value in dict_.values():
if result.get(value):
result[value] += 1
else:
result[value] = 1

输入

lolo = [{'migs_ba': 'O',
'migs_eu': 'O',
'migs_org': 'O',
'migs_pl': 'O',
'migs_vi': 'O',
'mimag': 'EM',
'mimarks_c': 'O',
'mimarks_s': 'EM',
'mims': 'EM',
'misag': 'EM',
'miuvig': 'EM'},
{'migs_ba': 'O',
'migs_eu': 'O',
'migs_org': 'O',
'migs_pl': 'O',
'migs_vi': 'O',
'mimag': 'EM',
'mimarks_c': 'O',
'mimarks_s': 'EM',
'mims': 'EM',
'misag': 'EM',
'miuvig': 'EM'}
]
result = {
}

输出

{'O': 12, 'EM': 10}

最新更新