Python的Dict容器一
- 7. Python的Dict容器
- 7.1 什麼是dict
- 7.2 Python讀取dict元素
- 7.3 Python添加dict元素
7. Python的Dict容器
7.1 什麼是dict
python的dict可以友善的儲存, 例如“名字”->“成績”的映射
在dict中,每一項包含一個key和一個value,key和value是一一對應的,在解決上面的問題中,我們可以使用名字作為key,成績作為value,那麼dict的定義如下:
d = {
'Alice': 45,
'Bob': 60,
'Candy': 75,
'David': 86,
'Ellena': 49
}
在定義裡,我們使用花括号{}表示這是一個dict,然後key和value之間使用冒号:分割,并且每一組key:value的最後,以逗号,表示這一組的結束
我們也可以使用以下的方式定義一個dict
d = dict()
print(d) # ==> {}
不過這種定義方式,預設得到的是一個空dict,需要調用函數往裡面添加資料
示例
新來的Gaven同學成績是86,請編寫一個dict,把Gaven同學的成績也加進去
d = {
'Alice': 45,
'Bob': 60,
'Candy': 75,
'David': 86,
'Ellena': 49
}
# Enter a code
d = {
'Alice': 45,
'Bob': 60,
'Candy': 75,
'David': 86,
'Ellena': 49,
'Gaven': 86
}
7.2 Python讀取dict元素
我們現在可以建立一個dict,儲存名字和成績的對應關系。
d = {
'Alice': 45,
'Bob': 60,
'Candy': 75,
'David': 86,
'Ellena': 49,
'Gaven': 86
}
dict提供通過key找到對應value的功能,通過d[key]的形式,就可以得到對應的value。
d = {
'Alice': 45,
'Bob': 60,
'Candy': 75,
'David': 86,
'Ellena': 49,
'Gaven': 86
}
print(d['Bob']) # ==> 60
print(d['Alice']) # ==> 45
這和list通過下标找到對應位置的元素是類似的
回顧一下前面使用下标的方式通路list元素的時候,當下标不存在時,就會引發錯誤,在dict中,也是一樣的,當對應的key不存在時,也會引發錯誤。
d = {
'Alice': 45,
'Bob': 60,
'Candy': 75,
'David': 86,
'Ellena': 49,
'Gaven': 86
}
print(d['Dodo'])
# 抛出異常
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'Dodo'
它的意思是key不存在,是以我們在需要通過key找到value時,一定要先判斷key存不存在,然後才使用上面的方式擷取對應的value,以避免錯誤
if 'Alice' in d:
print(d['Alice']) # ==> 45
if 'Dodo' in d: # Dodo不存在,是以不會走下面的邏輯
print(d['Dodo'])
除了使用這種方法,還有一種方法可以通過key來擷取對應的value,這種方法不會引起錯誤,dict本身提供get方法,把key當作參數傳遞給get方法,就可以擷取對應的value,當key不存在時,也不會報錯,而是傳回None。
print(d.get('Alice')) # ==> 45
print(d.get('Dodo')) # ==> None
因為通過get方法在代碼實作上更加簡單,且不會引起錯誤,是以更加推薦使用get方法來擷取dict的元素
示例
根據如下dict,列印出Alice, Bob, Candy, Mimi, David的成績,當同學不存在時,列印None
d = {
'Alice': 45,
'Bob': 60,
'Candy': 75,
'David': 86,
'Ellena': 49
}
# Enter a code
d = {
'Alice': 45,
'Bob': 60,
'Candy': 75,
'David': 86,
'Ellena': 49
}
print(d.get('Alice'))
print(d.get('Bob'))
print(d.get('Candy'))
print(d.get('Mimi'))
print(d.get('David'))

7.3 Python添加dict元素
dict和tuple不一樣,dict是可變的,我們随時可以往dict中添加新的key-value,比如成績dict:
d = {
'Alice': 45,
'Bob': 60,
'Candy': 75,
'David': 86,
'Ellena': 49
}
需要往裡面添加Dodo、Mimi的成績時,可以使用指派語句往裡面添加元素:
d['Mimi'] = 72
d['Dodo'] = 88
print(d)
實際上,value可以是任意類型的元素,可以是list、tuple等,假如Mimi近兩次成績分别是72,73,Dodo近兩次的成績分别是88,90,則可以使用指派語句往dict中添加list元素
d['Mimi'] = [72, 73]
d['Dodo'] = [88, 90]
print(d)
此後,如果Mimi、Dodo的第三次成績也出來了,分别是75,90,則可以先通過key把對應的value查詢出來,然後再往類型是list的value中添加第三次的成績。
d['Mimi'].append(75)
d['Dodo'].append(90)
print(d)
示例
d = {
'Alice': [45],
'Bob': [60],
'Candy': [75],
}
d = dict()
d['Alice'] = []
d['Bob'] = []
d['Candy'] = []
d['Alice'].append(50)
d['Alice'].append(61)
d['Alice'].append(66)
d['Bob'].append(80)
d['Bob'].append(61)
d['Bob'].append(66)
d['Candy'].append(88)
d['Candy'].append(75)
d['Candy'].append(90)