在Python中,字典中有多少项共享相同的值

2024-04-20 10:23:14 发布

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

有没有办法查看一个字典中有多少项在Python中共享相同的值?

假设我有一本字典,比如:

{"a": 600, "b": 75, "c": 75, "d": 90}

我想得到一本词典,比如:

{600: 1, 75: 2, 90: 1}

我的第一个天真的尝试是使用嵌套for循环,然后对每个值再次遍历字典。有更好的办法吗?


Tags: for字典词典办法
3条回答

当Python 2.7发布时,您可以使用它的collections.Counter class

否则请参见counter receipe

在Python 2.7a3下

from collections import Counter
items = {"a": 600, "b": 75, "c": 75, "d": 90}    
c = Counter( items )

print(  dict( c.items() ) )

输出为

{600: 1, 90: 1, 75: 2}

您可以使用itertools.groupby进行此操作。

import itertools
x = {"a": 600, "b": 75, "c": 75, "d": 90}
[(k, len(list(v))) for k, v in itertools.groupby(sorted(x.values()))]
>>> a = {"a": 600, "b": 75, "c": 75, "d": 90}
>>> b = {}
>>> for k,v in a.iteritems():
...     b[v] = b.get(v,0) + 1
...
>>> b
{600: 1, 90: 1, 75: 2}
>>>

相关问题 更多 >