網站首頁 編程語言 正文
1. 引言
在日常工作中,大家都需要進行字典的相關操作,對于某些初學者,經常會寫一堆繁瑣的代碼來實現某項簡單的功能。本篇文章重點介紹一些在Python中關于字典的一些簡單技巧,熟練掌握相關技巧可以極大提升大家的工作效率。
閑話少說,我們直接開始吧!
2. 使用union操作合并字典
當然我們可以使用for循環來組合不同字典中的元素,但是在使用Python3.9之后,我們可以方便的使用union操作來進行字典的合并。
樣例代碼如下:
cities_us = {'New York City': 'US', 'Los Angeles': 'US'} cities_uk = {'London': 'UK', 'Birmingham': 'UK'} cities = cities_us|cities_uk print(cities) # {'New York City': 'US', 'Los Angeles': 'US', 'London': 'UK', 'Birmingham': 'UK'}
當然我們也可以使用|= 來實現,如下:
cities_us = {'New York City': 'US', 'Los Angeles': 'US'} cities_uk = {'London': 'UK', 'Birmingham': 'UK'} cities_us |= cities_uk print(cities_us) # {'New York City': 'US', 'Los Angeles': 'US', 'London': 'UK', 'Birmingham': 'UK'}
3. 使用解包操作合并字典
考慮到使用union操作的簡潔性,我經常盡可能的使用該操作進行字典的合并操作。但是,如果我們使用的是Python3.9以下的版本,有沒有其他簡潔的方式來實現上述字典合并功能呢?
當然是存在的,此時推薦使用解包操作來實現。
樣例如下:
cities_1 = {'New York City': 'US', 'Los Angeles': 'US'} cities_2 = {'London': 'UK', 'Birmingham': 'UK'} cities = {**cities_1, **cities_2} print(cities) # {'New York City': 'US', 'Los Angeles': 'US', 'London': 'UK', 'Birmingham': 'UK'}
4. 使用字典生成式
與Python中的列表生成式一樣,字典生成式也是創建字典的一種簡便的方法,它為我們提供了篩選數據的靈活性。
字典生成式的一般范式為:
D = {<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->key: value for key,value in iterable (if condition)}
我們可以通過下方例子來體檢一下字典生成式的強大,如下:
cities = ['London', 'New York', 'Tokyo', 'Cambridge', 'Oxford'] countries = ['UK', 'US', 'Japan', 'UK', 'UK'] uk_cities = {city: country for city, country in zip(cities, countries) if country == 'UK'} print(uk_cities) # {'London': 'UK', 'Cambridge': 'UK', 'Oxford': 'UK'}
5. 字典中key-value互換
在某些情形下,我們需要互換字典中的key-value,當然有各種各樣的策略來實現上述功能。
以下是我比較推薦的兩種實現,如下:
cities = {<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->'London': 'UK', 'Tokyo': 'Japan', 'New York': 'US'}
方案一:
reversed_cities = {v: k for k, v in cities.items()} print(reversed_cities) # {'UK': 'London', 'Japan': 'Tokyo', 'US': 'New York'}
方案二:
reversed_cities = dict(zip(cities.values(), cities.keys())) print(reversed_cities)
6. 列表轉為字典
列表也是Python中最常使用的數據結構之一,在某些情形下,我們需要將列表轉化為字典。這里我們分情況來討論:
假如列表中包含key和value,此時可以直接使用dict來生成相應的對象,如下:
cities = [('London', 'UK'), ('New York', 'US'), ('Tokyo', 'Japan')] d_cities = dict(cities) print(d_cities) # {'London': 'UK', 'New York': 'US', 'Tokyo': 'Japan'}
如果列表中只含有key,需要統一賦值某value,此時一般使用dict.fromkeys
方法來實現,如下:
cities = ['London', 'Leeds', 'Birmingham'] d_cities = dict.fromkeys(cities,'UK') # set the default value to 'UK' print(d_cities) # {'London': 'UK', 'Leeds': 'UK', 'Birmingham': 'UK'}
7. 字典按照value來排序
使用一行代碼來實現字典按照value排序,可以借助lambda
來實現,樣例如下:
cities = {'London': '2', 'Tokyo': '3', 'New York': '1'} print(sorted(cities.items(),key=lambda d:d[1])) # [('New York', '1'), ('London', '2'), ('Tokyo', '3')]
8. 使用Counter
如果我們需要知道在字符串中每個字母使用了多少次,最直觀的方法可能是編寫一個for循環來遍歷所有字母并進行統計。
但如果我們知道Counter,則上述任務將變得異常簡單:
from collections import Counter city = "Yang Zhou" chars = Counter(city) print(chars) # Counter({'Y': 1, 'a': 1, 'n': 1, 'g': 1, ' ': 1, 'Z': 1, 'h': 1, 'o': 1, 'u': 1})
顧名思義,Counter
對象幫助我們完成字符統計部分,并將結果保存為字典。如果我們能在類似的使用場景中記住這個特殊的dict
,那么可以節省大量的代碼編寫時間。
9. 總結
本文重點介紹了Python中字典操作的相關技巧,并針對性的給出了相關示例和代碼實現。最后,送給大家兩句話共勉:
學習Python意味著我們可以編寫返回正確結果的程序。
掌握Python意味著我們可以以優雅、整潔和Pythonic的方式編寫相同的程序。
原文鏈接:https://blog.csdn.net/sgzqc/article/details/127160906
相關推薦
- 2022-03-22 C#中數據類型的轉換介紹_C#教程
- 2022-05-09 sql語句中union的用法與踩坑記錄_MsSql
- 2022-03-10 C語言之循環語句詳細介紹_C 語言
- 2022-11-04 golang?cache帶索引超時緩存庫實戰示例_Golang
- 2022-12-12 flutter中如何使用和擴展ThemeData實現詳解_Dart
- 2022-11-24 nginx平滑升級及nginx配置文件詳解_nginx
- 2022-05-26 Flutter自定義年月日倒計時_Android
- 2022-12-01 Django中ModelForm組件的簡單配置與使用教程_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支