- Python進(jìn)階編程:編寫更高效、優(yōu)雅的Python代碼
- 劉宇宙 謝東 劉艷
- 374字
- 2021-04-30 12:39:45
3.2.7 字典提取
在字典的實際應(yīng)用中,有時為滿足某些需求,我們需要將一個字典中滿足某些條件的子集構(gòu)造成一個新的字典。
實現(xiàn)該操作最簡單的方式是使用字典推導(dǎo),示例如下:
score_dict = { 'math': 95.0, 'java': 90.5, 'python': 100.0, 'sql': 93.0, 'english': 75.5 } # Make a dictionary of all score over 92 p1 = {key: value for key, value in score_dict.items() if value > 92} print(p1) # Make a dictionary of tech skill tech_names = {'python', 'sql', 'java'} p2 = {key: value for key, value in score_dict.items() if key in tech_names} print(p2)
對于大多數(shù)字典提取的情況,字典推導(dǎo)是能做到的。除此之外,我們還可以通過創(chuàng)建一個元組序列,然后把它傳給dict()函數(shù)來實現(xiàn),示例如下:
p1 = dict((key, value) for key, value in score_dict.items() if value > 92)
由代碼示例看到,字典推導(dǎo)方式表意更清晰,并且運行更快(在這個例子中,實際測試幾乎比dict()函數(shù)方式快整整一倍)。
有時候完成同一件事有多種方式。比如,第二個例子程序也可以重寫,代碼如下:
# Make a dictionary of tech skill tech_names = {'python', 'sql', 'java'} p2 = {key:score_dict[key] for key in score_dict.keys() & tech_names}
不過,運行時間大概比字典推導(dǎo)方式慢。如果對程序運行性能要求比較高,我們需要花點時間去做性能測試。
推薦閱讀
- 程序員面試筆試寶典(第3版)
- Django+Vue.js商城項目實戰(zhàn)
- C語言程序設(shè)計習(xí)題解析與上機指導(dǎo)(第4版)
- Raspberry Pi for Secret Agents(Third Edition)
- Java開發(fā)入行真功夫
- 實戰(zhàn)低代碼
- HTML5+CSS3網(wǎng)站設(shè)計教程
- Internet of Things with Intel Galileo
- FFmpeg入門詳解:音視頻原理及應(yīng)用
- Yocto for Raspberry Pi
- Elasticsearch Server(Third Edition)
- 從Excel到Python:用Python輕松處理Excel數(shù)據(jù)(第2版)
- Building Dynamics CRM 2015 Dashboards with Power BI
- 零基礎(chǔ)學(xué)C++(升級版)
- ASP.NET開發(fā)寶典