字典
學習目標
一、建立字典
(一)字典的意義
字典的結構與串列類似,其元素是以『鍵-值』對應方式儲存。
使用者可使用『鍵』取得『值』。
(二)建立的語法:如下三種語法
語法Ⅰ:將元素放置於一對大括號 {} 中,『鍵』可為字串、整數、浮點數等,但以"字串"表示最多。
字典名稱 = {鍵1 : 值1 , 鍵2 : 值2 , ...}
語法Ⅱ:以 dict 函數表示,將『鍵-值』放置於一對中括號 [] 中。
字典名稱 = dict([[鍵1,值1],[鍵2,值2],...])
語法Ⅲ:以 dict 函數表示,將鍵與值以等號連接即可,但此語法的『鍵』不可使用數值(執行時會產生錯誤)。
字典名稱 = dict(鍵1=值1,鍵2=值2,...)
◆ 範例1:建立字典。(檔名:dict-1.py)
執行結果:
二、字典元素的增刪
(一)基本取值
串列元素在記憶體中是依序排列資料,而字典元素則是隨意放置,沒有一定的位置。
字典以『鍵』為索引取得『值』,若鍵不存在,執行時會產生錯誤。
語法如下:
字典名稱[鍵]
呈上範例1
dict1 = {"A":87,"B":75,"C":65,"D":55}
print(dict1["B"]) #75
print(dict1["E"]) #執行時顯示錯誤 KeyError: 'E'
(二)以 get方法取值
為改善字典中若鍵不存在,執行時會產生錯誤,可透過 get方法取字典元素值,若鍵不存在亦不會產生錯誤。
語法如下:
字典名稱.get(鍵[,預設值])
預設值可有可無,當『鍵』不存在時會傳回 None 或預設值,程式執行時不會產生錯誤。
◆範例2:血型個性查詢:設計程式建立4筆字典資料,『鍵』為血型,『值』為個性,輸入血型後輸出其個性,若血型不存在,則顯示沒該血型。(檔名:dict_get-1.py)
執行1_結果:
執行2_結果:
(三)改修與新增元素值
改修與新增字典元素值的語法相同,如下:
字典名稱[鍵]=值
呈上範例1
dict1={"A":87,"B":75,"C":65,"D":55}
dict1["A"]=88
dict1["A+"]=95
print(dict1)
執行結果:
(四)刪除字典
刪除特定元素,語法如下:
del 字典名稱[鍵]
呈上例
del dict1["A"]
print(dict1)
執行結果:
刪除字典中所有元素,及刪除字典(即字典就不存在了),語法如下:
刪除所有元素:
字典名稱.clear()
刪除字典:
del 字典名稱
呈上例:
dict1.clear()
print(dict1) #{}為空字典
del dict1 #print(dict1) #產生錯誤 NameError: name 'dict1' is not defined
三、字典進階功能
(一)常用方法
下表中以 dict1={"A":87,"B":75} 為例,說明各種方法的執行結果。(檔名:dict-method.py)
*註:dict_items、dict_keys、dict_values 資料型態以 list 函數轉換為串列才能取的元素值,而 dict_items 轉換串列後相當於二維串列。
(二) in 功能
in 功能會檢查字典中的『鍵』是否存在,若存在則傳回True,若不存在則傳回False。
語法如下:
鍵 in 字典名稱
dict1={"A":87,"B":75} #字典名稱dict1
print("A" in dict1) #True
print("E" in dict1) #False
◆範例3:查詢產品價錢:建立3筆字典資料,鍵為產品名稱,值為價錢,店商輸入產品名稱後,若存在則顯示該產品價錢,若無資料則讓店商輸入價錢,並將此筆資料加入字典。(檔名:dictin-1py)
方法一:運用 in 功能。
執行1_結果:
執行2_結果:
方法二:運用 keys() 、values() 及 items() 方法。(檔名:keyvalue-1.py)
執行結果:
§實作練習
一、下表為2019/08/23全國各空氣品質指標(AQI)預報,請建立字典,鍵:值(空品區:AQI),使用者輸入空品區,即可查詢AQI 指標值。
【資料來源:行政院環境保護署-空氣品質指標】(檔名:dict_get-2.py)
執行結果:
二、夏令營活動報到及繳費查詢,輸入姓名即可查詢繳費狀況,若無此姓名,則新增此資料,當姓名輸入Enter鍵表示結束查詢。(檔名:dict_in-2.py)
執行結果:
三、12生肖性格特徵:將12生肖性格特徵資料以字典方式建立,鍵為生肖名稱,值為性格特徵,並以keys() 、values() 或 items() 方法顯示字典內容。【資料來源:十二生肖性格大解析】(檔名:keyvalue-2.py)