我有兩個字典串列如下:
old = [{'a': 'aa', 'b': 'bb', 'c': 'cc'}, {'a': 'aaa', 'b': 'bbb', 'c': 'ccc'}]
new = [{'a': 'aa', 'b': 'boy', 'c': 'cc'}, {'a': 'aaa', 'b': 'bbb', 'c': 'cat'}]
在新舊串列中的每個字典中,鍵是'a','b','c'。如果值中有任何差異,我需要確定差異。在上面的示例中,理想情況下,我希望輸出為“b”和“c”,因為這些鍵的值已更改。只需識別其值已被修改的鍵。
我應該如何實作這個?謝謝!
uj5u.com熱心網友回復:
試試這個片段看看它對你有幫助:請詢問是否有任何問題。
d1 = [{'a': 'aa', 'b': 'bb', 'c': 'cc'},
{'a': 'aaa', 'b': 'bbb', 'c': 'ccc'}]
d2 = [{'a': 'aa', 'b': 'boy', 'c': 'cc'},
{'a': 'aaa', 'b': 'bbb', 'c': 'cat'}]
for d1, d2 in zip(d1, d2):
#print(d1, d2) # get each dict from d1 and d2
for k in d1: # start to check the key from old (d1)
if k in d2 and d1[k] != d2[k]:
print(k) # b then c
uj5u.com熱心網友回復:
要比較兩個字典,請使用以下內容:
有字典 d1 和 d2
differences={key: ( d1[key], d2[key]) for key in d1 if key not in d2 or d1[key]!=d2[key]}
uj5u.com熱心網友回復:
這將比較第一個字典中的值并檢查其值是否與第二個字典不同。如果是這樣,它將產生它。
但是,此函式不會產生存在于一個字典中但不存在于另一個字典中的鍵。
這是一個生成器函式,因此請記住對其進行迭代或使用list(...).
old = [{'a': 'aa', 'b': 'bb', 'c': 'cc'}, {'a': 'aaa', 'b': 'bbb', 'c': 'ccc'}]
new = [{'a': 'aa', 'b': 'boy', 'c': 'cc'}, {'a': 'aaa', 'b': 'bbb', 'c': 'cat'}]
def difference(a, b):
for first, second in zip(a, b):
for key, value in first.items():
if key in second:
if value != second[key]:
yield key
print(list(difference(old, new)))
> python .\diff.py
['b', 'c']
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/489288.html
標籤:Python python-3.x 列表 字典
上一篇:使原始鏈接的可執行目錄可訪問
下一篇:基于第二個字典轉換/合并字典
