如何计算嵌套字典中的键出现的频率?

rer*_*edf 2 python dictionary function python-3.x

我有一个嵌套字典:

{'1': {'Toy Story (1995)': 5.0,
  'GoldenEye (1995)': 3.0,
  'Four Rooms (1995)': 4.0,
  'Get Shorty (1995)': 3.0,
  'Copycat (1995)': 3.0},
'2': {'GoldenEye (1995)': 3.0,
  'Get Shorty (1995)': 3.0,
  'Copycat (1995)': 3.0},
'3': {'Toy Story (1995)': 5.0,
  'Get Shorty (1995)': 3.0,
  'Copycat (1995)': 3.0}}
Run Code Online (Sandbox Code Playgroud)

如您所见,我有三个项目,对于每个项目,都有包含电影的字典。我想数一数哪些电影出现的次数最多。所以输出可以是一个列表或字典,其中包含电影名称以及它在项目中出现的频率。喜欢:

{'Get Shorty (1995)': 3, 
'Copycat (1995)': 3, 
'GoldenEye (1995)': 2, 
'Toy Story (1995)': 2, 
'Four Rooms (1995)': 1}
Run Code Online (Sandbox Code Playgroud)

怎么做?

Pau*_*ney 7

用于itertools.chain.from_iterable将电影名称拼凑成一个长列表,然后collections.Counter计算重复的名称。

假设您的嵌套 dict 被称为x.

>>> from itertools import chain
>>> from collections import Counter
>>> Counter(chain.from_iterable(x.values()))
Counter({'Get Shorty (1995)': 3, 'Copycat (1995)': 3, 'Toy Story (1995)': 2, 'GoldenEye (1995)': 2, 'Four Rooms (1995)': 1})
Run Code Online (Sandbox Code Playgroud)

您可以将反回常规dict使用

dict(counter)
Run Code Online (Sandbox Code Playgroud)

假设您的 Counter 名为counter