天天看點

【Python入門】Python的Dict容器一

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'))      
【Python入門】Python的Dict容器一

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)