在python里,dict的特點(diǎn)
提問人:楊紫紅發(fā)布時(shí)間:2020-11-26
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)存小,但是查找速度慢。
由于dict是按 key 查找,所以,在一個(gè)dict中,key不能重復(fù)。
dict的第二個(gè)特點(diǎn)就是存儲(chǔ)的key-value序?qū)κ菦]有順序的!這和list不一樣:
d = {
'Adam': 95,
'Lisa': 85,
'Bart': 59
}
當(dāng)我們?cè)噲D打印這個(gè)dict時(shí):
>>> print d
{'Lisa': 85, 'Adam': 95, 'Bart': 59}
打印的順序不一定是我們創(chuàng)建時(shí)的順序,而且,不同的機(jī)器打印的順序都可能不同,這說明dict內(nèi)部是無序的,不能用dict存儲(chǔ)有序的集合。
dict的第三個(gè)特點(diǎn)是作為 key 的元素必須不可變,Python的基本類型如字符串、整數(shù)、浮點(diǎn)數(shù)都是不可變的,都可以作為 key。但是list是可變的,就不能作為 key。
可以試試用list作為key時(shí)會(huì)報(bào)什么樣的錯(cuò)誤。
不可變這個(gè)限制僅作用于key,value是否可變無所謂:
{
'123': [1, 2, 3], # key 是 str,value是list
123: '123', # key 是 int,value 是 str
('a', 'b'): True # key 是 tuple,并且tuple的每個(gè)元素都是不可變對(duì)象,value是 boolean
}
最常用的key還是字符串,因?yàn)橛闷饋碜罘奖恪?/div>
不過dict的查找速度快不是沒有代價(jià)的,dict的缺點(diǎn)是占用內(nèi)存大,還會(huì)浪費(fèi)很多內(nèi)容,list正好相反,占用內(nèi)存小,但是查找速度慢。
由于dict是按 key 查找,所以,在一個(gè)dict中,key不能重復(fù)。
dict的第二個(gè)特點(diǎn)就是存儲(chǔ)的key-value序?qū)κ菦]有順序的!這和list不一樣:
d = {
'Adam': 95,
'Lisa': 85,
'Bart': 59
}
當(dāng)我們?cè)噲D打印這個(gè)dict時(shí):
>>> print d
{'Lisa': 85, 'Adam': 95, 'Bart': 59}
打印的順序不一定是我們創(chuàng)建時(shí)的順序,而且,不同的機(jī)器打印的順序都可能不同,這說明dict內(nèi)部是無序的,不能用dict存儲(chǔ)有序的集合。
dict的第三個(gè)特點(diǎn)是作為 key 的元素必須不可變,Python的基本類型如字符串、整數(shù)、浮點(diǎn)數(shù)都是不可變的,都可以作為 key。但是list是可變的,就不能作為 key。
可以試試用list作為key時(shí)會(huì)報(bào)什么樣的錯(cuò)誤。
不可變這個(gè)限制僅作用于key,value是否可變無所謂:
{
'123': [1, 2, 3], # key 是 str,value是list
123: '123', # key 是 int,value 是 str
('a', 'b'): True # key 是 tuple,并且tuple的每個(gè)元素都是不可變對(duì)象,value是 boolean
}
最常用的key還是字符串,因?yàn)橛闷饋碜罘奖恪?/div>
繼續(xù)查找其他問題的答案?
相關(guān)視頻回答
點(diǎn)擊加載更多評(píng)論>>