- Python進階編程:編寫更高效、優雅的Python代碼
- 劉宇宙 謝東 劉艷
- 552字
- 2021-04-30 12:39:44
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()方法類似,但它并不支持這里介紹的集合操作。這是因為某種程度上值視圖不能保證所有的值不相同,當出現相同的值時,會導致某些集合操作出現問題。不過,如果必須在值上執行這些集合操作,可以先將值轉換成集合,然后再執行集合運算。
推薦閱讀
- Clojure Programming Cookbook
- The DevOps 2.3 Toolkit
- LabVIEW 2018 虛擬儀器程序設計
- 數據庫程序員面試筆試真題與解析
- PostgreSQL for Data Architects
- Learning Chef
- Hadoop+Spark大數據分析實戰
- JavaScript by Example
- Python數據可視化之Matplotlib與Pyecharts實戰
- Java:High-Performance Apps with Java 9
- Canvas Cookbook
- 大學計算機基礎實訓教程
- Moodle 3.x Developer's Guide
- HTML5程序開發范例寶典
- Web前端開發技術實踐指導教程