计算字典python中键的相同值的出现次数

2024-05-17 15:46:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我的单子上有多个单子。我想从字典列表中计算某个值的发生次数。你知道吗

以下是dict的列表:

a = [{"a":"data1","b":"Nill","c":"data3","d":"Nill"},{"a":"dat1","b":"dat2","c":"dat3","d":"Nill"},{"a":"sa1","b":"sa2","c":"sa3","d":"Nill"}]

在这里,我要计算键中Nill的出现次数。如何使之成为可能。你知道吗

以下是我尝试的代码:

from collections import Counter
a = [{"a":"data1","b":"Nill","c":"data3","d":"Nill"},{"a":"dat1","b":"dat2","c":"dat3","d":"Nill"},{"a":"sa1","b":"sa2","c":"sa3","d":"Nill"}]
s = 0
for i in a:
    d = (a[s])
    #print(d)
    q = 0
    for z in d:
        print(z)
        z1=d[z]
        #print(z)
        if z1 == "Nill":
            q = q+1
            co = {z:q}
    print(co)

预期产量:

dict列表中Nill值的计数

{a:0,b:1,c:0,d:3}

Tags: 列表for次数dict单子printdata1data3
3条回答

试试这个:-


a = [{"a":"data1","b":"Nill","c":"data3","d":"Nill"},{"a":"dat1","b":"dat2","c":"dat3","d":"Nill"},{"a":"sa1","b":"sa2","c":"sa3","d":"Nill"}]

result_dict = {'a' : 0, 'b' : 0,'c' :0, 'd' : 0}
for i in a:
    for key, value in i.items():
        if value =="Nill":
            result_dict[key] +=1

print(result_dict)

编辑:

要匹配所需的输出:

import pandas as pd
df = pd.DataFrame(a)
occ = {k: list(v.values()).count('Nill') for k,v in df.to_dict().items()}

您可以直接使用计数器,方法是使用类似这样的方法对布尔表达式进行计数,利用计数器将True计数为1这一事实。你知道吗

a = [{"a":"data1","b":"Nill","c":"data3","d":"Nill"},{"a":"dat1","b":"dat2","c":"dat3","d":"Nill"},{"a":"sa1","b":"sa2","c":"sa3","d":"Nill"}]

c = Counter()
for d in a:
   c.update({k: v == 'Nill' for k, v in d.items()})

# c => Counter({'a': 0, 'b': 1, 'c': 0, 'd': 3})

相关问题 更多 >