国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

九個(gè)令人相見(jiàn)恨晚的Python字典技巧,讓你寫(xiě)出更優(yōu)雅、更Pythonic的代碼!

開(kāi)發(fā) 前端
今天筆者將向大家分享9個(gè)令人相見(jiàn)恨晚的Python字典技巧,讓你更優(yōu)雅高效地處理字典,寫(xiě)出更加Pythonic的代碼。

今天筆者將向大家分享9個(gè)令人相見(jiàn)恨晚的Python字典技巧,讓你更優(yōu)雅高效地處理字典,寫(xiě)出更加Pythonic的代碼。

1. 使用 dict(key=value) 創(chuàng)建字典

通常,我們通過(guò)以下方式創(chuàng)建字典:

test_dict: dict = {'name': 'Jack Zhang', 'age': 23, 'city': 'San Francisco'}

但是我常用的是 dict(key=value) 的方式:

test_dict2: dict = dict(name='Jack Zhang', age=23, city='San Francisco')

這樣做的好處是:當(dāng)使用 {} 創(chuàng)建字典時(shí),對(duì)于字符串鍵,我們需要輸入引號(hào)符。如果處理的鍵很多,那么就需要輸入更多的引號(hào)符,這不僅效率低下,而且還很無(wú)聊。而使用 dict(key=value) 方式,則不需要輸入引號(hào)符,省去了我們很多無(wú)聊的工作,并且代碼更簡(jiǎn)潔。

當(dāng)然,dict(key=value) 方式不適用于非字符串鍵,因此這兩種方式都有各自的用途,根據(jù)需求選擇最合適的方式即可。

2. 使用 ** 合并字典

dict1: dict = dict(name='Jack Zhang', age=23)
dict2: dict = dict(city='San Francisco', major='Software Engineering')
com_dict: dict = {**test_dict, **test_dict2}
print(f'com_dict: {com_dict}')
# com_dict: {'name': 'Jack Zhang', 'age': 23, 'city': 'San Francisco'}

字典前面的 ** 符號(hào)用于將鍵值對(duì)解包到目標(biāo)字典中。

3. 使用 ** 將字典作為參數(shù)傳遞

def personal_info(name: str, age: int, city: str) -> None:
    print(f'Name: {name}, Age: {age}, City: {city}')

personal_info(name='Jack Zhang', age=23, city='San Francisco')
# Name: Jack Zhang, Age: 23, City: San Francisco

當(dāng)然,我們也可以動(dòng)態(tài)地將包含鍵 name, age 和 city 的字典傳遞給函數(shù):

personal_info(**test_dict)
# Name: Jack Zhang, Age: 23, City: San Francisco

字典前面的 ** 可以將字典的鍵值解包到函數(shù) personal_info 中。如果我們想要?jiǎng)討B(tài)地將關(guān)鍵字參數(shù)傳遞到函數(shù)中,這種方式很有用。

4. 字典推導(dǎo)式

假設(shè)我們想要?jiǎng)?chuàng)建字典:{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

有兩種方式:

  • ① 常規(guī)方式——循環(huán)實(shí)現(xiàn):
num_pow: dict = {}
for num in range(1, 6):
    num_pow[num] = num ** 2
print(f'num_pow: {num_pow}')
# {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
  • ② 字典推導(dǎo)式實(shí)現(xiàn):
num_pow2: dict = {num: num ** 2 for num in range(1, 6)}
print(f'num_pow2: {num_pow2}')
# {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

雖然兩種方式都是正確且合法的方式,但請(qǐng)注意,字典推導(dǎo)式更加優(yōu)雅、Pythonic 且可讀性更強(qiáng)。

5. get(key, default_value) 獲取字典值

通常情況下,當(dāng)我們?cè)L問(wèn)一個(gè)不存在的鍵時(shí),會(huì)得到 KeyError:

test_dict: dict = dict(name='Jack Zhang', age=23, city='San Francisco')
print(f"zipcode: {test_dict['zipcode']}")
# KeyError: 'zipcode'

如果我們不希望出現(xiàn) KeyError,那么可以使用 get() 方法,如果鍵不存在,該方法會(huì)返回 None:

print(f"zipcode: {test_dict.get('zipcode')}") # None

這個(gè)時(shí)候,我們就不會(huì)得到 KeyError,而是 None。此外,我們還可以設(shè)置默認(rèn)值(如果鍵不存在):

print(f"zipcode: {test_dict.get('zipcode', '110110')}")
# zipcode: 110110

6. 根據(jù)元組列表創(chuàng)建字典

lst_of_tuple: list[tuple[str, str]] = [('Jack Zhang', 'Male'), ('John', 'Male'), ('Elina', 'Female')]
people_dict: dict = dict(lst_of_tuple)
print(f'Personal informaiton: {people_dict}')
# Personal informaiton: {'Jack Zhang': 'Male', 'John': 'Male', 'Elina': 'Female'}

在實(shí)際項(xiàng)目中,如果需要通過(guò)上下文的元組列表創(chuàng)建字典,這種方式就非常有用。

7. values() 和 items() 方法

一般情況下,當(dāng)我們遍歷字典本身時(shí),我們得到的是字典的所有鍵:

for name in people_dict:
    print(f'name: {name}')
# name: Jack Zhang
# name: John
# name: Elina

這等價(jià)于 .keys() 方法:

for name in people_dict.keys():
    print(f'name: {name}')
# name: Jack Zhang
# name: John
# name: Elina

如果我們使用 .values() 方法,我們將生成字典的所有值:

for gender in people_dict.values():
    print(f'gender: {gender}')
# gender: Male
# gender: Male
# gender: Female

然而,如果我們想要同時(shí)獲取字典的鍵值對(duì),則可以使用 .items() 方法:

for name, gender in people_dict.items():
    print(f'name: {name}; gender: {gender}')
# name: Jack Zhang; gender: Male
# name: John; gender: Male
# name: Elina; gender: Female

8. setdefault() 方法

前面我們提到使用 get() 方法訪(fǎng)問(wèn)不存在的字典鍵時(shí),不會(huì)得到 KeyError。其實(shí),還有另外一種方法 setdefault() 可以達(dá)到相同的目的。與前者的區(qū)別在于,setdefault() 方法還可以動(dòng)態(tài)修改字典,即當(dāng)字典鍵不存在時(shí),會(huì)向字典中增加新的鍵值對(duì)。

print(f'zipcode: {test_dict.get("zipcode", "110110")}')
print(test_dict)
print(f'zipcode: {test_dict.setdefault("zipcode", "110110")}')
print(test_dict)

使用 setdefault() 方法,我們可以輕易實(shí)現(xiàn)字符計(jì)數(shù):

info: str = 'Python is a very powerful programming language!'
char_count: dict = dict()
for char in info:
    char_count[char] = char_count.setdefault(char, 0) + 1
print(char_count)
# {'P': 1, 'y': 2, 't': 1, 'h': 1, 'o': 3, 'n': 3, ' ': 6, 'i': 2, 's': 1, 'a': 4, 'v': 1, 'e': 3, 'r': 4, 'p': 2, 'w': 1, 'f': 1, 'u': 2, 'l': 2, 'g': 4, 'm': 2, '!': 1}

9. 可以作為字典鍵以及不能作為鍵的數(shù)據(jù)類(lèi)型

通常:

  • 不可變數(shù)據(jù)類(lèi)型可以作為字典鍵,比如:int, str, tuple, bool。
  • 可變數(shù)據(jù)類(lèi)型則不可以作為字典鍵,比如:list, dict。

結(jié)論

今天的分享就到這啦!感謝你的閱讀,希望本文對(duì)你能有所幫助!

責(zé)任編輯:華軒 來(lái)源: 數(shù)據(jù)派探險(xiǎn)家
相關(guān)推薦

2021-04-14 09:22:18

Python技巧交換變量值

2020-05-07 09:02:55

代碼Python開(kāi)發(fā)

2024-08-22 08:57:32

Python技巧參數(shù)

2017-06-01 09:34:55

R語(yǔ)言包sqldf

2021-09-28 14:40:03

Python內(nèi)置庫(kù)itertools

2024-01-29 00:51:39

前端開(kāi)發(fā)利器

2018-01-25 14:53:20

iPhone技巧刪除照片

2024-09-05 16:02:52

Python數(shù)據(jù)類(lèi)型字符串

2015-10-27 10:12:21

r語(yǔ)言命令相見(jiàn)恨晚

2021-04-20 10:47:59

手機(jī)APP科技

2016-12-09 12:50:36

Android

2019-08-09 14:13:22

Python知乎程序員

2020-05-06 09:18:56

Pandas函數(shù)大數(shù)據(jù)技術(shù)

2020-04-01 14:16:05

Pandastips數(shù)據(jù)分析

2021-08-20 15:43:54

iPhone手機(jī)iOS

2021-08-19 15:02:32

科技軟件電腦

2019-12-02 10:16:45

Linux 開(kāi)源操作系統(tǒng)

2018-02-07 14:54:17

Riverbed應(yīng)用性能管理數(shù)字體驗(yàn)

2020-11-23 21:23:34

辦公

2019-08-29 09:10:11

Linux命令編程語(yǔ)言
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

91极品视频在线观看| 欧美精品一区二区精品网| 亚洲va韩国va欧美va精品| 国产欧美日本一区二区三区| 九九九久久久精品| 中文字幕免费不卡在线| 亚洲美女一区| 国产精品国码视频| 亚洲国产综合在线观看| 2024最新电影在线免费观看| 国产成人久久精品麻豆二区| 国产成人精品亚洲午夜麻豆| 精品一区二区亚洲| 久久久久欧美| 免费污视频在线| 99久久精品国产毛片| 欧美黑人一级爽快片淫片高清| 亚洲国产日韩欧美在线观看| 杨幂一区二区三区免费看视频| 亚洲国产精品影院| 日韩亚洲视频| 伊人久久国产| 国产欧美久久久精品影院| 欧美一级大片在线观看| 国产裸体舞一区二区三区| av在线私库| 国产九色精品成人porny | 精品少妇一区二区三区日产乱码| 亚洲综合在线做性| 亚洲精华国产| **国产精品| 国产亚洲女人久久久久毛片| 国产亚洲免费的视频看| 在线视频亚洲自拍| 欧美人与动牲性行为| 女人色偷偷aa久久天堂| 欧美精品国产| 麻豆免费看一区二区三区| 精品久久美女| 欧美在线黄色| 亚洲激情网址| 色天天综合色天天久久| 亚洲熟妇无码另类久久久| 成年人免费大片| 久久99中文字幕| av一区二区三区免费观看| 亚洲成人影院在线观看| 国内一区二区三区| 欧美日韩在线综合| 欧美日韩综合久久| 午夜小视频在线观看| 久久99深爱久久99精品| 在线播放日韩精品| 69日本xxxxxxxxx49| 日韩一区二区在线| 欧美一区二区三区免费观看视频| 国产精品一区二区三| 三上悠亚免费在线观看| 一区二区三区高清在线视频 | 亚洲aaaaaa| 亚洲欧美日韩综合一区| 婷婷丁香激情网| 秋霞一区二区三区| 亚洲私人影院在线观看| 欧美一区二区三区播放老司机| 亚洲精品乱码久久久久久按摩观| 久久久免费观看视频| 免费看日本黄色| 欧美jizz18性欧美| 亚洲精品成人| 亚洲欧洲日韩国产| 国产男女激情视频| 欧美.www| 国产视频精品va久久久久久| www欧美激情| 一区二区三区国产盗摄 | av国产在线观看| 影视亚洲一区二区三区| 精品美女国产在线| 国产欧美日韩综合精品二区| 国产视频福利在线| 视频一区中文字幕| 这里精品视频免费| 老司机在线免费视频| 亚洲二区三区不卡| 亚洲韩国青草视频| 亚洲国产精品久久久久婷婷老年 | 欧美日韩mp4| 国产又粗又爽又黄的视频| 麻豆传媒在线免费看| 亚洲免费福利一区| 欧美专区一区二区三区| 黄色成人在线播放| 原创国产精品91| 欧美 日韩 国产精品| 日韩大胆成人| 日韩女优毛片在线| 日本在线三级| 久久久精品蜜桃| 在线观看日韩羞羞视频| 色97色成人| 97人人模人人爽人人喊中文字 | fc2在线中文字幕| 91影院在线观看| 国产成人精品一区二区三区福利| gogo在线观看| 中文文精品字幕一区二区| 日韩免费av一区二区| 日本一区二区免费看| 精品久久在线| 精品久久久中文| 日本不卡一区| 国产日产一区| 91精品国产一区二区三区| www.日日操| 中文字幕剧情在线观看一区| 婷婷久久伊人| 黄色免费高清视频| 黄色激情在线视频| 成人黄色av片| 亚洲综合在线网站| 日本在线免费观看视频| 免费看成年人视频在线观看 | 国产噜噜噜噜噜久久久久久久久| 国产成人综合精品| 国产精品777| 成人免费在线看片| 奇米影视首页 狠狠色丁香婷婷久久综合 | 狠狠色伊人亚洲综合网站色| 黑人中文字幕一区二区三区| 色大师av一区二区三区| 超碰在线免费观看97| 六月丁香婷婷在线| 夜色福利刺激| 日本视频不卡| 精精国产xxxx视频在线野外| 朝桐光一区二区| 白嫩白嫩国产精品| 婷婷综合在线| 日韩高清在线一区| 成人福利电影精品一区二区在线观看| 国产欧美精品一区二区三区四区| 亚洲黄色片在线观看| 欧美日韩久久久| 一本色道久久88综合日韩精品| 欧美日韩成人黄色| 91久久久久久国产精品| 日韩电影在线播放| 欧美亚洲另类色图| 三上悠亚在线观看| 毛片大全在线观看| 亚洲精品观看| 国内精品福利| 国精品**一区二区三区在线蜜桃| 久久―日本道色综合久久| 亚洲成av人综合在线观看| 欧美理论片在线| 成人亚洲精品| 日韩国产在线看| 国产一级片在线| 久久婷婷综合激情| 91香蕉亚洲精品| 日韩色性视频| 欧美亚洲国产一区二区三区va| 制服诱惑一区| 国产精品字幕| 亚洲欧美国产日韩中文字幕| 自拍亚洲一区| 久久久久久国产精品美女| 波多野结衣中文字幕久久| 国产亚洲精品久久久久动| 欧美一级二级三级视频| 超碰97国产在线| 国产精品996| 成人黄色电影在线| 精品剧情v国产在线观看在线| 国产探花一区二区| 国产在线精品一区免费香蕉 | 国产精品一区视频| 欧美伦理在线视频| 欧美日韩另类综合| 国产精品欧美久久久久一区二区| 中文字幕在线一二| 亚洲激情自拍图| 日韩中文字幕高清在线观看| 女女百合国产免费网站| 亚洲免费av高清| av在线日韩| 亚洲一区在线直播| 欧美在线视频不卡| 精品一级毛片| 日日摸日日碰夜夜爽av| 五月综合激情婷婷六月色窝| 在线免费观看黄色网址| 日韩欧美一区二区视频| 美女福利一区二区三区| 欧美激情在线观看视频| 欧美三级伦理在线| 日韩成人av电影在线| 久久亚洲综合色|