我想知道您是否可以幫助我。如何:比較列表中的字典
我有兩個包含字典的列表,大部分這些鍵都是一樣的。請參閱下面的一個簡單的例子:
x1 = [{'a':1,'b':"cat"},{'a':2,'b':"parrot"},...]
x2 = [{'a':2,'b':"dog"},{'a':1,'b':"fish"},...]
現在我想比較基於一鍵即鍵的值,但兩個列表的長度不會永遠是相同的。如果存在相應字典,則關鍵字a將始終存在於兩個字典中,即x1[0]['a'] == x2[1]['a']
。
我怎麼能比較這些基於密鑰a的字典,以便我可以首先丟棄x1
那些不出現在x2
,反之亦然。然後確定兩個詞典中是否出現某些值,然後將其記錄在數據庫中,這裏沒有必要。
我在想的是將這些字典組合成一個基於關鍵字a的列表中的元組。然後遍歷這個並比較這些值。這可能不是最好的辦法,所以如果你有更好的想法,請隨時取消。 :)
[編輯]
我沒有清楚地說明問題,我很抱歉。我希望做的是;首先:匹配基於密鑰a的字典。第二:忽略那些不匹配的(關鍵字a)。第三:比較密鑰b。第四:根據b的比較更新數據庫。
謝謝所有已經回答的人。
我的答案是這樣的:
「我想到了一個列表比較可能做精,以構建一個包含從x1
的字典,從x2
字典對應的元組,然後通過每個元組比較鍵B迭代但我認爲這可能太慢了。「
我不認爲這是做的非常好的方式。所以這就是爲什麼我在這裏:)
謝謝你提前。
請描述你想要的結果。比較所有這些對比較容易,但是所有這些比較的結果應該如何處理? – Alfe
如果列表不是同樣長的(如你所說的那樣),會發生什麼? – Alfe
你能解釋一下這個陳述嗎? '如果有對應的字典,關鍵字a將永遠存在於兩個字典中'。你的例子不是很有幫助。 – Abhijit