python获取dict中给定模式的出现次数

时间:2013-11-10 20:48:15

标签: python dictionary

我有一本字典如下:

adict = {'instr1' : "yes", 'instr2' : "yes", 'instr3' : "yes", 'instr4' : "no"}

是否有一种简单的方法可以在字典中获得“是”的数量?

2 个答案:

答案 0 :(得分:3)

您可以使用collections.Counter

>>> adict = {'instr1' : "yes", 'instr2' : "yes", 'instr3' : "yes", 'instr4' : "no"}
>>> import collections
>>> collections.Counter(adict.values())
Counter({'yes': 3, 'no': 1})

答案 1 :(得分:3)

您可以使用sum和生成器表达式:

>>> sum(1 for x in adict.itervalues() if x == 'yes')
3

作为True == 1,所以这也是有效的:

sum( x == 'yes' for x in adict.itervalues())

另一个选项是list.count,与sum()比较快,但会创建内存中所有值的列表:

>>> adict.values().count('yes')
3