私は次の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のサイズのファイルを扱っているので、辞書には非常に大きなデータが含まれています。これを最適化された方法でどのように実装できますか?
私は次の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のサイズのファイルを扱っているので、辞書には非常に大きなデータが含まれています。これを最適化された方法でどのように実装できますか?
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が必要であり、失敗する可能性が高いことに注意してください。
これは、よりPython的な方法です。リストの展開では、両方の辞書で等しくない値のみが考慮されます。
diffrent_keys = [key for key in d1 if d1[key] != d2[key] ]