将字典与列表类型值进行比较

时间:2012-07-20 11:26:24

标签: python-2.7

我有以下2个词典,

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的文件,字典包含非常大的 数据。如何以优化的方式实施?

2 个答案:

答案 0 :(得分: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需要很多内存并且很可能会失败。

答案 1 :(得分:0)

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

diffrent_keys = [key for key in d1 if d1[key] != d2[key] ]