標籤:

查找兩字典的相同點

查找兩字典的相同點

來自專欄 python進階學習+odoo項目實戰

問題

怎樣在兩個字典中尋尋找相同點(比如相同的鍵、相同的值等等)?

解決方案

考慮下面兩個字典:

a = {

x : 1,

y : 2,

z : 3

}

b = {

w : 10,

x : 11,

y : 2

}

為了尋找兩個字典的相同點,可以簡單的在兩字典的keys() 或者items() 方法返

回結果上執行集合操作。比如:

# Find keys in common

a.keys() & b.keys() # { x, y }

# Find keys in a that are not in b

a.keys() - b.keys() # { z }

# Find (key,value) pairs in common

a.items() & b.items() # { (y, 2) }

這些操作也可以用於修改或者過濾字典元素。比如,假如你想以現有字典構造一個

排除幾個指定鍵的新字典。下面利用字典推導來實現這樣的需求:

# Make a new dictionary with certain keys removed

c = {key:a[key] for key in a.keys() - {z, w}}

# c is {x: 1, y: 2}

討論

一個字典就是一個鍵集合與值集合的映射關係。字典的keys() 方法返回一個展現

鍵集合的鍵視圖對象。鍵視圖的一個很少被了解的特性就是它們也支持集合操作,比如

集合併、交、差運算。所以,如果你想對集合的鍵執行一些普通的集合操作,可以直接

使用鍵視圖對象而不用先將它們轉換成一個set。

字典的items() 方法返回一個包含(鍵,值) 對的元素視圖對象。這個對象同樣也

支持集合操作,並且可以被用來查找兩個字典有哪些相同的鍵值對。

儘管字典的values() 方法也是類似,但是它並不支持這裡介紹的集合操作。某種

程度上是因為值視圖不能保證所有的值互不相同,這樣會導致某些集合操作會出現問

題。不過,如果你硬要在值上面執行這些集合操作的話,你可以先將值集合轉換成set,

然後再執行集合運算就行了。


推薦閱讀:

12星愛情字典關鍵詞,我的關鍵詞是浪漫關心自由~~
康熙字典 繁體筆畫8
漢字 - 字典 - 漢字大全
介紹幾個可以查文字粵音的網站
Python3中如何實現dict.keys()的功能?

TAG:字典 |