计算每个项目在字典中出现的次数

2024-05-10 01:04:42 发布

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

我有一本字典,像:

members = {
"member1" : ["PCP2", "PCP3"],
"member2" : ["PCP1", "PCP2"],
"member3" : ["PCP3"],
"member4" : ["PCP1"],
"member5" : ["PCP4", "PCP5"],
"member6" : ["PCP1", "PCP5"],
"member6" : ["PCP2", "PCP3", "PCP4"],
"member7" : ["PCP3", "PCP5"],
"member8" : ["PCP1", "PCP4", "PCP5"],
"member9" : ["PCP2", "PCP4"],
"member10" : ["PCP2"],
"member11" : ["PCP3"],
"member12" : ["PCP4", "PCP5"], 
}

如何计算每个特定“PCP”在此对象中出现的次数,并返回一个新字典,其计数如下:

PCPcounts = {
"PCP1" : 4,
"PCP2" : 5,
"PCP3" : 5,
"PCP4" : 5,
"PCP5" : 5
}

Tags: 字典memberspcp2pcp3pcp5pcp1pcp4member4
3条回答

在纯python中,如下所示:

members = {
"member1" : ["PCP2", "PCP3"],
"member2" : ["PCP1", "PCP2"],
"member3" : ["PCP3"],
"member4" : ["PCP1"],
"member5" : ["PCP4", "PCP5"],
"member6" : ["PCP1", "PCP5"],
"member6" : ["PCP2", "PCP3", "PCP4"],
"member7" : ["PCP3", "PCP5"],
"member8" : ["PCP1", "PCP4", "PCP5"],
"member9" : ["PCP2", "PCP4"],
"member10" : ["PCP2"],
"member11" : ["PCP3"],
"member12" : ["PCP4", "PCP5"],
}
PCPcounts = {}
for m in members.values():
    for v in m:
        if v in PCPcounts:
            PCPcounts[v] += 1
        else:
            PCPcounts[v] = 1
print(PCPcounts)

输出:

{'PCP2': 5, 'PCP3': 5, 'PCP1': 3, 'PCP4': 5, 'PCP5': 4}

import itertools
import collections
members = { ... }
PCPcounts = collections.Counter(itertools.chain.from_iterable(members.values()))

如果只从PCPcounts读取,那么collections.Counter就足够了。如果没有,请将其包装在字典中,例如dict(collections.Counter(...))

In [1]: from collections import defaultdict

In [2]: PCPcounts = defaultdict(int)

In [3]: members = {
   ...: "member1" : ["PCP2", "PCP3"],
   ...: "member2" : ["PCP1", "PCP2"],
   ...: "member3" : ["PCP3"],
   ...: "member4" : ["PCP1"],
   ...: "member5" : ["PCP4", "PCP5"],
   ...: "member6" : ["PCP1", "PCP5"],
   ...: "member6" : ["PCP2", "PCP3", "PCP4"],
   ...: "member7" : ["PCP3", "PCP5"],
   ...: "member8" : ["PCP1", "PCP4", "PCP5"],
   ...: "member9" : ["PCP2", "PCP4"],
   ...: "member10" : ["PCP2"],
   ...: "member11" : ["PCP3"],
   ...: "member12" : ["PCP4", "PCP5"],
   ...: }


In [4]: for k, v in members.items():
   ...:     for vv in v:
   ...:         PCPcounts[vv] += 1
   ...:

In [5]: PCPcounts
Out[5]: defaultdict(int, {'PCP2': 5, 'PCP3': 5, 'PCP1': 3, 'PCP4': 5, 'PCP5': 4})

相关问题 更多 >