dict的第一個特點是查找速度快,無論dict有10個元素還是10萬個元素,查找速度都一樣。而list的查找速度随着元素增加而逐漸下降。
不過dict的查找速度快不是沒有代價的,dict的缺點是占用記憶體大,還會浪費很多内容,list正好相反,占用記憶體小,但是查找速度慢。
由于dict是按 key 查找,是以,在一個dict中,key不能重複。
dict的第二個特點就是存儲的key-value序對是沒有順序的!這和list不一樣:
d = {
'Adam': 95,
'Lisa': 85,
'Bart': 59
}
當我們試圖列印這個dict時:
>>> print d
{'Lisa': 85, 'Adam': 95, 'Bart': 59}
列印的順序不一定是我們建立時的順序,而且,不同的機器列印的順序都可能不同,這說明dict内部是無序的,不能用dict存儲有序的集合。
dict的第三個特點是作為 key 的元素必須不可變,Python的基本類型如字元串、整數、浮點數都是不可變的,都可以作為 key。但是list是可變的,就不能作為 key。
可以試試用list作為key時會報什麼樣的錯誤。
不可變這個限制僅作用于key,value是否可變無所謂:
{
'123': [1, 2, 3], # key 是 str,value是list
123: '123', # key 是 int,value 是 str
('a', 'b'): True # key 是 tuple,并且tuple的每個元素都是不可變對象,value是 boolean
}
最常用的key還是字元串,因為用起來最友善。
作業:
請設計一個dict,可以根據分數來查找名字,已知成績如下:
Adam: 95,
Lisa: 85,
Bart: 59.