2017-03-03 35 views
0

我是python的新手,已經寫了一些代碼來做這個比較,但是效率很低,並且像150行一樣長。python - 比較2個字典與不同類型的嵌套值的好方法?

這裏有2個比較例子(實際上它們要長得多,但沒有比這更深,只有這些數據類型)。

dict1 = { 
    'id': '1', 
    'file': 'filename1', 
    'namespace1': {'key1': 'val1', 
       'key2': 'val2', 
       'key3': 'val3'}, 
    'namespace2': {'key4': ['listval1', 'listval2', 'listval3'], 
       'key5': 'val5'} 
} 

dict2 = { 
    'id': '2', 
    'file': 'filename2', 
    'namespace1': {'key1': 'val1', 
       'key2': 'val2', 
       'key3': 'val7'}, 
    'namespace2': {'key4': ['listval1', 'listval2', 'listval7'], 
       'key5': 'val5'}, 
    'namespace3': 'key6' 
} 

是否有任何有效的方法來比較這兩個詞典並存儲差異顯示?我在這方面遇到了很大的困難......我想正確的方法是轉換爲集合並遞歸比較,但我不確定它能否正常工作。任何幫助深表感謝。謝謝!

回答

2

我認爲你需要通過「比較」定義更準確。 也許嘗試使用使用deepdiff包:

pip install deepdiff 

用途如下:

from deepdiff import DeepDiff 
print DeepDiff(dict1, dict2) 

這表明什麼是這兩種類型的字典

+0

哇靠之間的變化,這是絕對完美的。謝謝! – user797963

+0

..如果只有一種方法可以忽略類型變化;( – user797963

+0

;)我只是將所有內容都轉換爲unicode,很好用 – user797963