Python中字典中有多少项共享相同的值
有没有办法查看在Python中有多少个字典里的项目共享相同的值呢?
假设我有一个这样的字典:
{"a": 600, "b": 75, "c": 75, "d": 90}
我想得到一个这样的结果字典:
{600: 1, 75: 2, 90: 1}
我最初的简单想法是用一个嵌套的for循环,对于每个值再遍历一次字典。有没有更好的方法呢?
5 个回答
1
在编程中,有时候我们会遇到一些问题,比如代码运行不正常或者出现错误。这时候,我们需要去查找问题的原因。通常,我们可以通过查看错误信息、调试代码或者在网上搜索相关的解决方案来找到答案。
在StackOverflow这个网站上,有很多程序员分享他们遇到的问题和解决方法。如果你在编程过程中遇到困难,可以去那里看看,可能会找到别人已经解决过的类似问题。
记得在提问的时候,要尽量描述清楚你遇到的问题,包括你使用的编程语言、代码的具体情况以及你尝试过的解决方法。这样,其他人才能更好地帮助你。
>>> 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}
>>>
2
当Python 2.7发布时,你可以使用它的collections.Counter类
如果没有的话,可以看看这个计数的例子
在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}
7
你可以使用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()))]