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

Jar*_*red 5 python dictionary

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

假设我有一个字典,如:

{"a": 600, "b": 75, "c": 75, "d": 90}
Run Code Online (Sandbox Code Playgroud)

我想得到一个结果字典,如:

{600: 1, 75: 2, 90: 1}
Run Code Online (Sandbox Code Playgroud)

我的第一个天真的尝试是只使用嵌套for循环,然后对于每个值,我将再次迭代字典.有一个更好的方法吗?

Wol*_*lph 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()))]
Run Code Online (Sandbox Code Playgroud)

  • 如果没有**排序**这些值,将无法在一般情况下工作!例如,使用`sorted` Python内置函数. (4认同)