字典中值的计数
我有一个字典,内容如下。
dictA = {
'a' : ('duck','duck','goose'),
'b' : ('goose','goose'),
'c' : ('duck','duck','duck'),
'd' : ('goose'),
'e' : ('duck','duck')
}
我想遍历这个字典(dictA),并输出一个列表,显示在字典中值为“duck”的键,如果这个值出现超过一次的话。
比如,对于这个字典(dictA),这个功能会输出下面的列表。
list = ['a', 'c', 'e']
我相信有简单的方法可以做到这一点,但我刚学Python,这让我有点困惑。
3 个回答
3
随便说说,这里还有另外一种方法:
>>> from collections import Counter
>>> [i for i in dictA if Counter(dictA[i])['duck'] > 1]
['a', 'c', 'e']
Counter
是用来 - 你猜对了 - 计数的工具。
4
我觉得这对初学者来说是个好方法。不要把你的列表命名为 list
,因为Python里已经有一个叫 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的回答中的列表推导式更容易理解。
13
[k for (k, v) in dictA.iteritems() if v.count('duck') > 1]
当然可以!请把你想要翻译的内容发给我,我会帮你把它变得更简单易懂。