字典中的计数值

2024-06-26 13:58:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本字典如下。

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还不熟悉,这让我很困惑。


Tags: 方法函数列表字典listduckgoosedicta
3条回答

我认为这是初学者的好方法。不要调用列表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']

当你明白了这一点,你会发现伊格纳西奥的答案中的列表理解更容易理解。

就为了它-这是另一个,另一个方式:

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

^{}是为了-你猜对了-数东西。

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

相关问题 更多 >