2017-05-22 96 views
0

我想獲得其值在兩個字典不同的按鍵 如:如何找到兩個字典有區別普通鑰匙,價值

items1=['a','b','c'] 
price1=[1,2,3] 
dictA= dict(zip(items1, price1)) 

items2=['a','b'] 
price2=[1,3] 
dictB=dict(zip(items2,price2)) 

這樣的差異會[「B」],因爲這密鑰是唯一的區別

我嘗試使用set(dictA.items()).symmetric_difference(dictB.items()),但這也返回鍵:值{「C」:3}

+0

您使用的是什麼版本的Python? –

回答

2

遍歷公共密鑰,以及具有在dictAdictB匹配值下降鍵:

In [3]: {key for key in dictA.keys() & dictB if dictA[key] != dictB[key]} 
Out[3]: {'b'} 
+0

贏了我10秒,很好的回答 – Netwave

+0

注意:這個不值得Py2:'{key for dictA.keys()&dictB if dictA [key]!= dictB [key]}' - >'TypeError:不支持的操作數類型爲&:'list'和'dict'' – TemporalWolf

+0

@TemporalWolf是的,我發現沒有必要在我的答案中支持Python 2 – vaultah

1

您必須迭代交集。

delta = [k for k in (set(dictA) & set(dictB)) if (dictB[k] - dictA[k])] 
+0

如果字典值不是數字,該怎麼辦? – vaultah

+1

是的。你知道,這些事情是一場比賽。 = c) – Scott

+0

改爲使用'dictB [k]!= dictA [k]'。處理所有事情,這對所有人都有好處 –