繁体   English   中英

列出字典列表中所有键的所有值的计数

[英]tabulate counts of all values from all keys in list of 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'}...
]

我想列出所有显示为该字典列表中任何键的值的字符串,如下所示

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

考虑到您将列表命名为“元素”,这应该可行

from collections import Counter

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

output

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 = {
}

output

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM