這篇文章主要會介紹如何使用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
留言