我目前有一个字典d
,其键为:string
,值是另一个dict
。
在d
词典值中,如何检查哪些键和值都相同?
字典示例:
zybook,zybooks,zybookz是密钥。可以有三个以上的键,但是我现在只输入了两个。然后d
的值是带有{文件名:数字}的另一个字典
d = {"zybook":
{
"noodle.json": 5,
"testing.json": 1,
"none.json": 5
},
"zybooks":
{
"noodle.json": 5,
"ok.json": 1
},
"zybookz":
{
"noodle.json": 5
}
}
预期产量:
因为{“ noodle.json”:5} {“ noodle.json”:5}在zybook,zybooks和zybookz中都相同,所以输出将创建具有所有3个匹配项的另一个词典。
{"noodle.json": 5}
我的尝试:
老实说,我不知道该如何处理。
d = {"zybook": { "noodle.json": 5, "testing.json": 1, "none.json": 5},
"zybooks": {"noodle.json": 5, "ok.json": 1},
"zybookz": {"noodle.json": 5}
}
for key, value in d.items():
for k, v in value.items():
if
最佳答案
from functools import reduce
sets = (set(val.items()) for val in d.values())
desired = dict(reduce(set.intersection, sets))
print(desired)
# {'noodle.json': 5}
我们首先从每个字典的
file_name:num
对中形成表格。然后,reduce
累积查找每个集合,并通过取这些集合的交集将它们减少到所需的结果。最后,根据需要转换为dict
。