我有一本字典如下。
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的新手,这让我很难过。
答案 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
是 - 你猜对了 - 计算事物。