字典

學習目標

    • 瞭解字典串列元組的概念與差異。

    • 學會字典與迴圈的設計與應用。

    • 學會串列常用方法的使用與應用。

一、建立字典

(一)字典的意義

    • 字典的結構與串列類似,其元素是以『鍵-值』對應方式儲存。

    • 使用者可使用『鍵』取得『值』。

(二)建立的語法如下三種語法

    • 語法Ⅰ:將元素放置於一對大括號 {} 中,『鍵』可為字串、整數、浮點數等,但以"字串"表示最多。

字典名稱 = {鍵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)