我有一个这样的列表:
[{'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}