Python字典使用技巧詳解
1. 引言
在日常工作中,大家都需要進(jìn)行字典的相關(guān)操作,對(duì)于某些初學(xué)者,經(jīng)常會(huì)寫(xiě)一堆繁瑣的代碼來(lái)實(shí)現(xiàn)某項(xiàng)簡(jiǎn)單的功能。本篇文章重點(diǎn)介紹一些在Python中關(guān)于字典的一些簡(jiǎn)單技巧,熟練掌握相關(guān)技巧可以極大提升大家的工作效率。
閑話少說(shuō),我們直接開(kāi)始吧!
2. 使用union操作合并字典
當(dāng)然我們可以使用for循環(huán)來(lái)組合不同字典中的元素,但是在使用Python3.9之后,我們可以方便的使用union操作來(lái)進(jìn)行字典的合并。
樣例代碼如下:
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'}
當(dāng)然我們也可以使用|= 來(lái)實(shí)現(xiàn),如下:
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操作的簡(jiǎn)潔性,我經(jīng)常盡可能的使用該操作進(jìn)行字典的合并操作。但是,如果我們使用的是Python3.9以下的版本,有沒(méi)有其他簡(jiǎn)潔的方式來(lái)實(shí)現(xiàn)上述字典合并功能呢?
當(dāng)然是存在的,此時(shí)推薦使用解包操作來(lái)實(shí)現(xiàn)。
樣例如下:
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中的列表生成式一樣,字典生成式也是創(chuàng)建字典的一種簡(jiǎn)便的方法,它為我們提供了篩選數(shù)據(jù)的靈活性。
字典生成式的一般范式為:
D = {<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->key: value for key,value in iterable (if condition)}
我們可以通過(guò)下方例子來(lái)體檢一下字典生成式的強(qiáng)大,如下:
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,當(dāng)然有各種各樣的策略來(lái)實(shí)現(xiàn)上述功能。
以下是我比較推薦的兩種實(shí)現(xiàn),如下:
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. 列表轉(zhuǎn)為字典
列表也是Python中最常使用的數(shù)據(jù)結(jié)構(gòu)之一,在某些情形下,我們需要將列表轉(zhuǎn)化為字典。這里我們分情況來(lái)討論:
假如列表中包含key和value,此時(shí)可以直接使用dict來(lái)生成相應(yīng)的對(duì)象,如下:
cities = [('London', 'UK'), ('New York', 'US'), ('Tokyo', 'Japan')] d_cities = dict(cities) print(d_cities) # {'London': 'UK', 'New York': 'US', 'Tokyo': 'Japan'}
如果列表中只含有key,需要統(tǒng)一賦值某value,此時(shí)一般使用dict.fromkeys
方法來(lái)實(shí)現(xiàn),如下:
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來(lái)排序
使用一行代碼來(lái)實(shí)現(xiàn)字典按照value排序,可以借助lambda
來(lái)實(shí)現(xiàn),樣例如下:
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
如果我們需要知道在字符串中每個(gè)字母使用了多少次,最直觀的方法可能是編寫(xiě)一個(gè)for循環(huán)來(lái)遍歷所有字母并進(jìn)行統(tǒng)計(jì)。
但如果我們知道Counter,則上述任務(wù)將變得異常簡(jiǎn)單:
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
對(duì)象幫助我們完成字符統(tǒng)計(jì)部分,并將結(jié)果保存為字典。如果我們能在類似的使用場(chǎng)景中記住這個(gè)特殊的dict
,那么可以節(jié)省大量的代碼編寫(xiě)時(shí)間。
9. 總結(jié)
本文重點(diǎn)介紹了Python中字典操作的相關(guān)技巧,并針對(duì)性的給出了相關(guān)示例和代碼實(shí)現(xiàn)。最后,送給大家兩句話共勉:
學(xué)習(xí)Python意味著我們可以編寫(xiě)返回正確結(jié)果的程序。
掌握Python意味著我們可以以優(yōu)雅、整潔和Pythonic的方式編寫(xiě)相同的程序。
到此這篇關(guān)于Python字典使用技巧詳解的文章就介紹到這了,更多相關(guān)Python字典內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Python實(shí)現(xiàn)博客上進(jìn)行自動(dòng)翻頁(yè)
這篇文章主要介紹了使用Python實(shí)現(xiàn)博客上進(jìn)行自動(dòng)翻頁(yè),需要的朋友可以參考下2017-08-08python3 selenium自動(dòng)化 下拉框定位的例子
今天小編就為大家分享一篇python3 selenium自動(dòng)化 下拉框定位的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08Django 權(quán)限管理(permissions)與用戶組(group)詳解
這篇文章主要介紹了Django 權(quán)限管理(permissions)與用戶組(group)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11python計(jì)算牛頓迭代多項(xiàng)式實(shí)例分析
這篇文章主要介紹了python計(jì)算牛頓迭代多項(xiàng)式的方法,涉及Python數(shù)學(xué)運(yùn)算的相關(guān)技巧,需要的朋友可以參考下2015-05-05