0

私は次の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]}

これらの2つの辞書を比較して、一致しないキーと値のペアの位置(インデックス)を取得するにはどうすればよいですか?私は約2GBのサイズのファイルを扱っているので、辞書には非常に大きなデータが含まれています。これを最適化された方法でどのように実装できますか?

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)

関数を呼び出すとき、3番目のパラメーターlistOfKeysはキーを保存する空のリストです。2 GB相当のデータをdictに読み込むには、大量のRAMが必要であり、失敗する可能性が高いことに注意してください。

于 2012-07-20T12:08:09.253 に答える
0

これは、よりPython的な方法です。リストの展開では、両方の辞書で等しくない値のみが考慮されます。

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