Python dictionary字典教學(迴圈,取值,更新,新增,刪除,keys,values)

入門篇

這篇文章主要會介紹如何使用Python的字典。字典的結構其實和串列(list)非常相似,只是字典是依靠一個key來取得內部的value。

字典(Dict)

字典是一個透過Key來指定特定位置的Value的數據型式。

跟我們一般的list不同的地方在於,list是是透過索引的位置來取的數據,但字典是是靠Key來去得的。

舉例來說,以下面的台灣郵遞區號我們可以看到中正區對應到的是100,大同區對應到的是103。以程式代碼來寫的話就會變成下面這樣。(台灣郵遞區號

中正區 : 100
大同區 : 103
.
.
.
富里鄉 : 983

像上面這樣每個區的郵遞區號都有對應的號碼,在字典中中正區的部分就屬於key,而對應到的value就是100。因此我們只要在字典的key值輸入’中正區’就可以取得100這個value。

生成字典

Python的字典可以透過以下方式生成。

  • {}中的項目會透過 , (逗號)來區隔
  • key和value則是會透過 : (冒號)來連接
clubs = {'Alice' : 'tennis', 'Bob' : 'baseball', 'Rick' : 'soccer'}
print(clubs)

輸出後結果會是下面這樣。

{'Alice': 'tennis', 'Bob': 'baseball', 'Rick': 'soccer'}

在這邊要注意的是,同一個字典裡面不可以有重複的key,但是可以有重複的value。可以想像一把鑰匙只能對應一個箱子,但是不同的箱子裡可以放著同樣的東西。因此如果代碼像下面這樣會因為有重複的key而出現Error。

clubs = {'Alice' : 'tennis', 'Alice' : 'baseball', 'Rick' : 'soccer'}

字典的新增、取值與更新

取值

字典[key]只要用這個方式就可以取得字典中該Key對應的Value。

clubs = {'Alice' : 'tennis', 'Bob' : 'baseball', 'Rick' : 'soccer'}
print(clubs['Alice']) 

執行結果

tennis

更新

字典[既有key]=新value就可以更新字典中該key對應到的value。

clubs = {'Alice' : 'tennis', 'Bob' : 'baseball', 'Rick' : 'soccer'}
clubs['Alice'] = 'swim'
print(clubs)

執行結果。

{'Alice': 'swim', 'Bob': 'baseball', 'Rick': 'soccer'}

新增

另外,字典[新key]=value則是可以新增字典中的內容。

clubs['Ben'] = 'football'
print(clubs)

執行結果。

{'Alice': 'swim', 'Bob': 'baseball', 'Rick': 'soccer', 'Ben': 'football'}

刪除字典元素 del, pop

刪除字典中的元素主要有兩種方式,分別是透過del以及pop來刪除。

del

透過del 字典[key]我們可以刪除字典中對應的元素。

clubs = {'Alice' : 'tennis', 'Bob' : 'baseball', 'Rick' : 'soccer', 'Ben' : 'football'}
del clubs['Bob']
print(clubs)

執行結果。

{'Alice': 'tennis', 'Rick': 'soccer', 'Ben': 'football'}

pop

pop跟del雖然都是刪除字典中的元素,但不同的地方在於pop在刪除元素的同時也可以取得被刪除的元素。另外pop的用法是字典.pop(key)

clubs = {'Alice' : 'tennis', 'Bob' : 'baseball', 'Rick' : 'soccer', 'Ben' : 'football'}
Bob = clubs.pop('Bob')
print(Bob)
print(clubs)

執行結果。

baseball
{'Alice': 'tennis', 'Rick': 'soccer', 'Ben': 'football'}

keys, values

keys

使用字典.keys()就可以一口氣取得字典中所有的key。待會也會介紹如何使用迴圈for來取得各個key以及value。

clubs = {'Alice' : 'tennis', 'Bob' : 'baseball', 'Rick' : 'soccer', 'Ben' : 'football'}
print(clubs.keys())

執行結果

dict_keys(['Alice', 'Bob', 'Rick', 'Ben'])

values

values也一樣,使用字典.values()就可以一口氣取得字典中所有的value。

print(clubs.values())

執行結果

dict_values(['tennis', 'baseball', 'soccer', 'football'])

迴圈 for

在學習字典的迴圈之前,我們要先學習字典的items功能。只要使用字典.items()就可以一口氣取得字典的(key, value)。

clubs = {'Alice' : 'tennis', 'Bob' : 'baseball', 'Rick' : 'soccer', 'Ben' : 'football'}
print(clubs.items())

執行結果

dict_items([('Alice', 'tennis'), ('Bob', 'baseball'), ('Rick', 'soccer'), ('Ben', 'football')])

迴圈for

字典的迴圈使用方法主要有以下兩種。

  • 用for取得字典的key值,再用key值取得字典的value
  • 在使用for時同時使用items(),可以同時取得字典的key和value

第一種方式在寫代碼上效率會比較差。

clubs = {'Alice' : 'tennis', 'Bob' : 'baseball', 'Rick' : 'soccer', 'Ben' : 'football'}
for key in clubs:
    print(key, clubs[key])

執行結果

Alice tennis
Bob baseball
Rick soccer
Ben football

第二種方式可以同時取得字典的key跟value,在實務上比較常使用。

clubs = {'Alice' : 'tennis', 'Bob' : 'baseball', 'Rick' : 'soccer', 'Ben' : 'football'}
for key, value in clubs.items():
    print(key, value)

執行結果

Alice tennis
Bob baseball
Rick soccer
Ben football

留言