我目前有一个字典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

09-30 15:14
查看更多