我有一本嵌套字典:

Movies = {1: {'1060277': 'cloverfield', '1877830': 'The Batman', '0117283': 'The Pallbearer'},
          2: {'1877830': 'The Batman', '1877321': 'The Yards', '0117283': 'The Pallbearer'},
          3: {'6723592': 'Tenet', '1099212': 'Twilight', '1877830': 'The Batman'}}

现在,我想返回一个字典,它包含嵌套字典中所有字典的公共键值对,在本例中是

--> 1877830 The Batman

因为它是所有3个嵌套字典中唯一通用的一个.

我似乎搞不懂如何比较这些字典:

#mov is where Movies will be passed    
def Narrow_down(mov):
      final_list= mov[1]
      for i in final_list.keys():
        for x,y in mov.items(): 
            for key in y:
                if i==key:
                    print(i, "is common ")

推荐答案

基本上,你需要第一本字典,然后对于每一本下一本字典,只保留第一本字典中的键,这些键也在下一本字典中.

一个非常简单的解决方案使用functools.reduce():

from functools import reduce

# you don't really need the outer dictionary, but if you do, this is list(Movies.values())
movies = [
    {'1060277': 'cloverfield', '1877830': 'The Batman', '0117283': 'The Pallbearer'},
    {'1877830': 'The Batman', '1877321': 'The Yards', '0117283': 'The Pallbearer'},
    {'6723592': 'Tenet', '1099212': 'Twilight', '1877830': 'The Batman'}
]

result = reduce(lambda d1, d2: {k: v for k, v in d1.items() if k in d2 and d2[k] == d1[k]}, movies)

print(result)

结果:

{'1877830': 'The Batman'}

请注意,我将变量命名为movies——您应该避免使用大写字母命名变量,因为这会导致其他人(也许future 的您)认为它是一个类名.

Python相关问答推荐

对Numpy函数进行载体化

对某些列的总数进行民意调查,但不单独列出每列

如何根据参数推断对象的返回类型?

Pandas - groupby字符串字段并按时间范围 Select

聚合具有重复元素的Python字典列表,并添加具有重复元素数量的新键

对所有子图应用相同的轴格式

基于索引值的Pandas DataFrame条件填充

DataFrames与NaN的条件乘法

我对我应该做什么以及我如何做感到困惑'

在Python argparse包中添加formatter_class MetavarTypeHelpFormatter时, - help不再工作""""

joblib:无法从父目录的另一个子文件夹加载转储模型

在Python中使用yaml渲染(多行字符串)

为什么在FastAPI中创建与数据库的连接时需要使用生成器?

Python—为什么我的代码返回一个TypeError

为用户输入的整数查找根/幂整数对的Python练习

你能把函数的返回类型用作其他地方的类型吗?'

操作布尔值的Series时出现索引问题

解析CSV文件以将详细信息添加到XML文件

Pandas:使列中的列表大小与另一列中的列表大小相同

Pandas ,快速从词典栏中提取信息到新栏