gpt4 book ai didi

python - 如何从嵌套字典中查找公共(public)键值对

转载 作者:行者123 更新时间:2023-12-05 08:45:49 26 4
gpt4 key购买 nike

我有这个嵌套字典:

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'}}

现在,我想返回一个字典,该字典包含嵌套字典中所有字典的公共(public)键值对,在本例中为

--> 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 - 如何从嵌套字典中查找公共(public)键值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71593982/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com