0

我有以下两本词典,

d1={"aa":[1,2,3],"bb":[4,5,6],"cc":[7,8,9]}
d2={"aa":[1,2,3],"bb":[1,1,1,1,1,1],"cc":[7,8]}

我如何比较这两个字典并获得 UNMATCHED 键值对的位置(索引)?由于我正在处理大小约为 2 GB 的文件,因此字典包含非常大的数据。如何以优化的方式实现这一点?

4

2 回答 2

1
def getUniqueEntry(dictionary1, dictionary2, listOfKeys):
    assert sorted(dictionary1.keys()) == sorted(dictionary2.keys()), "Keys don't match"  #check that they have the same keys
    for key in dictionary1:
        if dictionary1[key] != dictionary2[key]:
            listOfKeys.append(key)

调用该函数时,第三个参数listOfKeys是一个空列表,您希望在其中存储密钥。请注意,将 2 GB 的数据读入 dict 需要大量内存,并且很可能会失败。

于 2012-07-20T12:08:09.253 回答
0

这是一种更 Pythonic 的方式:列表扩展将只考虑两个字典中不相等的值:

diffrent_keys = [key for key in d1 if d1[key] != d2[key] ]
于 2016-03-17T09:19:15.290 回答