在字典中计算值

时间:2013-02-07 04:17:01

标签: python dictionary

我有一本字典如下。

dictA = { 
    'a' : ('duck','duck','goose'), 
    'b' : ('goose','goose'), 
    'c' : ('duck','duck','duck'), 
    'd' : ('goose'), 
    'e' : ('duck','duck') 
    }

我希望循环遍历dictA并输出一个列表,该列表将显示dictA中具有多个“duck”值的键。

例如,对于dictA,此函数将输出以下列表。

list = ['a', 'c', 'e']

我确信有一种简单的方法可以做到这一点,但我是Python的新手,这让我很难过。

3 个答案:

答案 0 :(得分:13)

[k for (k, v) in dictA.iteritems() if v.count('duck') > 1]

答案 1 :(得分:4)

我认为这对初学者来说是个好方法。不要拨打您的列表list - 有一个名为list

的内置广告
>>> dictA = { 
...     'a' : ('duck','duck','goose'), 
...     'b' : ('goose','goose'), 
...     'c' : ('duck','duck','duck'), 
...     'd' : ('goose'), 
...     'e' : ('duck','duck') 
...     }
>>> my_list = []
>>> for key in dictA:
...     if dictA[key].count('duck') > 1:
...         my_list.append(key)
... 
>>> my_list
['a', 'c', 'e']

下一阶段是使用.items(),因此您无需查看每个键的值

>>> my_list = []
>>> for key, value in dictA.items():
...     if value.count('duck') > 1:
...         my_list.append(key)
... 
>>> my_list
['a', 'c', 'e']

当你明白这一点时,你会发现Ignacio的答案中的列表理解更容易理解。

答案 2 :(得分:3)

只是为了它 - 它是另一个,其他方式:

>>> from collections import Counter
>>> [i for i in dictA if Counter(dictA[i])['duck'] > 1]
['a', 'c', 'e']

Counter是 - 你猜对了 - 计算事物。