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

Python 如何计算嵌套字典中的键出现的频率?,python,python-3.x,function,dictionary,Python,Python 3.x,Function,Dictionary,我有一本嵌套字典: {'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 Sto

我有一本嵌套字典:

{'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}}
如你所见,我有三个条目,每个条目都有带胶片的字典。我想数一数哪部电影最常上映。因此,输出可以是一个列表或字典,其中包含电影名称以及它在项目中出现的频率。比如:

{'Get Shorty (1995)': 3, 
'Copycat (1995)': 3, 
'GoldenEye (1995)': 2, 
'Toy Story (1995)': 2, 
'Four Rooms (1995)': 1}
如何做到这一点?

用于将电影名称平铺成一个长列表,然后计算重复的名称

假设嵌套的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})
您可以使用将计数器转换回常规的
dict

dict(counter)
假设您的计数器名为
Counter

这个怎么样

org_dict = {'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}}
  
new_dict = {}
for e in org_dict.values():
    for movie in e.keys():
        if movie in new_dict:
            new_dict[movie] += 1
        else:
            new_dict[movie] = 1
new_dict
输出为

{'Copycat (1995)': 3,
 'Four Rooms (1995)': 1,
 'Get Shorty (1995)': 3,
 'GoldenEye (1995)': 2,
 'Toy Story (1995)': 2}

为了得到期望的结果,我们可以首先迭代给定字典中的所有键并提取它们的值,然后从这些值中,我们将再次迭代以获取它们的键,并将它们作为键添加到新字典中,然后在它们再次出现时增加它们的值

我试过的代码是

sample_dict = {'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}}

 result_dict= {}

for key in sample_dict.keys():
    for keys in sample_dict[key].keys():
        if keys in result_dict.keys():
            result_dict[keys] += 1
        else:
            result_dict[keys] = 1

print(result_dict)