官术网_书友最值得收藏!

3.2.5 字典查找

對于序列,Python提供了求交集、并集等的操作;對于字典,Python提供了類似操作,如找到這兩個字典相同的鍵或相同的值。

以下為兩個字典示例:


a_dict = {
    'x' : 1,
    'y' : 2,
    'z' : 3
}

b_dict = {
    'w' : 10,
    'x' : 11,
    'y' : 2
}

為了尋找兩個字典的相同點,我們可以簡單地在兩字典的keys()或者items()方法返回結果上執行集合操作,示例如下:


# Find keys in common
print(a_dict.keys() & b_dict.keys())
# Find keys in a that are not in b
print(a_dict.keys() - b_dict.keys())
# Find (key,value) pairs in common
print(a_dict.items() & b_dict.items())

這些操作也可以用于修改或者過濾字典元素。如想以現有字典構造一個排除幾個指定鍵的新字典,可以利用字典推導來實現:


# Make a new dictionary with certain keys removed
c = {key:a_dict[key] for key in a_dict.keys() - {'z', 'w'}}
print(c) # c is {'x': 1, 'y': 2}

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

一個很少被了解的鍵視圖特性是它也支持集合操作,比如集合并、交、差運算。如果想對鍵集合執行一些普通的集合操作,可以直接使用鍵視圖對象,而不用先將它們轉換成一個集合。

字典的items()方法返回一個包含(鍵,值)對的元素視圖對象。這個對象同樣支持集合操作,并且可以被用來查找兩個字典相同的鍵值對。

盡管鍵視圖與字典的values()方法類似,但它并不支持這里介紹的集合操作。這是因為某種程度上值視圖不能保證所有的值不相同,當出現相同的值時,會導致某些集合操作出現問題。不過,如果必須在值上執行這些集合操作,可以先將值轉換成集合,然后再執行集合運算。

主站蜘蛛池模板: 台中县| 古丈县| 五莲县| 兴宁市| 枣庄市| 呼和浩特市| 鹿邑县| 和田市| 砀山县| 伊宁县| 莫力| 塔河县| 大田县| 雅安市| 民权县| 白水县| 定西市| 西昌市| 阜康市| 堆龙德庆县| 介休市| 舒城县| 曲阳县| 林周县| 开封市| 正蓝旗| 南川市| 上杭县| 蒙山县| 九龙县| 临漳县| 开原市| 丹阳市| 德江县| 台北市| 福鼎市| 介休市| 南通市| 鄂伦春自治旗| 民勤县| 寻甸|