第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

章節(jié)
問答
課簽
筆記
評(píng)論
占位
占位

Python dict的特點(diǎn)

查找速度快

dict的第一個(gè)特點(diǎn)是查找速度快,無論dict有10個(gè)元素還是10萬個(gè)元素,查找速度都一樣。而list的查找速度隨著元素增加而逐漸下降。
不過dict的查找速度快不是沒有代價(jià)的,dict的缺點(diǎn)是占用內(nèi)存大,還會(huì)浪費(fèi)很多內(nèi)容,list正好相反,占用內(nèi)存小,但是查找速度慢。

有序與無序

在Python3.5之前,dict中的元素是無序的,也就是dict中元素的插入順序和打印順序未必一致,比如使用Python3.5之前的版本執(zhí)行以下代碼:

d = {
    'Alice': 45,
    'Bob': 60,
    'Candy': 75,
    'David': 86,
    'Ellena': 49
}
print(d) # ==> {'Bob': 60, 'Ellena': 49, 'Alice': 45, 'Candy': 75, 'David': 86}

可以看到,打印的順序和定義的順序并不一致。
但是在Python3.6、Python3.7版本中,卻得到了有序的結(jié)果。

print(d) # ==> {'Alice': 45, 'Bob': 60, 'Candy': 75, 'David': 86, 'Ellena': 49}

為什么在不同的版本中,會(huì)得到不一樣的結(jié)果呢?這是因?yàn)榈讓拥膶?shí)現(xiàn)發(fā)生了改變,我們可以認(rèn)為在Python3.6的版本以后,dict是有序的,但是一般而言,為了避免不必要的誤解,一般在需要有序的dict時(shí),我們會(huì)使用一種叫做Ordereddict的字典,來確保有序。

key不可變

對(duì)于基礎(chǔ)數(shù)據(jù)類型,字符串、數(shù)字等,這些都是不可變的,可以作為dict的key,而對(duì)于復(fù)雜數(shù)據(jù)類型,經(jīng)過前面的學(xué)習(xí),我們知道tuple是不可變的,list是可變的,因此tuple可以作為dict的key,但是list不可以作為dict的key,否則將會(huì)報(bào)錯(cuò)。

key = (1, 2, 3) # 以tuple作為key
d[key] = True
key = [1, 2, 3]
d[key] = True
# 報(bào)錯(cuò)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

如上所示,如果將list作為dict的key,將會(huì)引起錯(cuò)誤。
由于dict是按 key 查找,所以,在一個(gè)dict中,key不能重復(fù)。

Python遍歷dict

通過直接print(d),我們打印出來的是完整的一個(gè)dict;有時(shí)候,我們需要把dict中m一定條件的元素打印出來,比如成績(jī)超過60的,在這種情況下,我們需要?jiǎng)t需要遍歷dict(這種時(shí)候需要使用for循環(huán)),并通過條件判斷把滿足條件的打印出來。
遍歷dict有兩種方法, 第一種是遍歷dict的所有key,并通過key獲得對(duì)應(yīng)的value。

d = {
    'Alice': 45,
    'Bob': 60,
    'Candy': 75,
    'David': 86,
    'Ellena': 49
}
for key in d: # 遍歷d的key
    value = d[key]
    if value > 60:
        print(key, value)
# ==> Candy 75
# ==> David 86

第二種方法是通過dict提供的items()方法,items()方法會(huì)返回dict中所有的元素,每個(gè)元素包含key和value。

for key, value in d.items():
    if value > 60:
        print(key, value)
# ==> Candy 75
# ==> David 86

任務(wù)

同學(xué)的近三次成績(jī)?nèi)缦?,?qǐng)把每個(gè)同學(xué)的每次成績(jī)依次輸出。

d = {'Alice': [50, 61, 66], 'Bob': [80, 61, 66], 'Candy': [88, 75, 90]}
?不會(huì)了怎么辦

參考答案:

d = {'Alice': [50, 61, 66], 'Bob': [80, 61, 66], 'Candy': [88, 75, 90]}
for key, value in d.items():
    for score in value:
        print(key, score)
||

提問題

寫筆記

公開筆記
提交
||

請(qǐng)驗(yàn)證,完成請(qǐng)求

由于請(qǐng)求次數(shù)過多,請(qǐng)先驗(yàn)證,完成再次請(qǐng)求

加群二維碼

打開微信掃碼自動(dòng)綁定

您還未綁定服務(wù)號(hào)

綁定后可得到

  • · 粉絲專屬優(yōu)惠福利
  • · 大咖直播交流干貨
  • · 課程更新,問題答復(fù)提醒
  • · 賬號(hào)支付安全提醒

收藏課程后,能更快找到我哦~

使用 Ctrl+D 可將課程添加到書簽

邀請(qǐng)您關(guān)注公眾號(hào)
關(guān)注后,及時(shí)獲悉本課程動(dòng)態(tài)

舉報(bào)

0/150
提交
取消
全部 精華 我要發(fā)布
全部 我要發(fā)布
最熱 最新
只看我的

手記推薦

更多

本次提問將花費(fèi)2個(gè)積分

你的積分不足,無法發(fā)表

為什么扣積分?

本次提問將花費(fèi)2個(gè)積分

繼續(xù)發(fā)表請(qǐng)點(diǎn)擊 "確定"

為什么扣積分?