如何比较键的等价值与值(代码的第6行)

时间:2014-08-24 16:59:59

标签: python

假设有一个变量mp_affiliation与一个字典相关联,该字典将议会成员的姓名映射到党派,并与变量party_size相关联,该字典将党名称映射到他们拥有的成员数量。

party_size={}
for i in list(mp_affiliation.values):
    party_size[i]=0
for k in mp_affiliation:
    for i in party_size:
        if mp_affiliation[k]==i
            party_size[i]+=1

2 个答案:

答案 0 :(得分:4)

试试这个,如果我们使用内置的Counter类,它会更简单:

from collections import Counter
party_size = Counter(mp_affiliation.values())

现在party_size变量将包含一个字典,用于将政党与议员数量相对应。但是如果你想手工完成这个,那么答案就是:

party_size = {}
for i in mp_affiliation.values():
    party_size[i]  = 0
for i in mp_affiliation.values():
    party_size[i] += 1

或稍短,使用defaultdict

from collections import defaultdict
party_size = defaultdict(int)
for i in mp_affiliation.values():
    party_size[i] += 1

答案 1 :(得分:1)

无需导入任何特殊内容或编写方法来执行此操作。循环键和值,如果政党已经在dict中,则在成员计数中加1,否则将其添加到dict并将成员计数设置为1.

party_size = {}
for (k, v) in mp_affiliation.items():
    if v in party_size.keys():
        party_size[v]+=1
    else:
        party_size[v] = 1