何謂字典

字典(dict)的每個元素是用冒號「:」分隔,冒號之前是鍵(Key),冒號之後是值(Value),換言之是由「鍵:值」組成一個元素。元素間用逗號「,」分隔,所有元素被「{}」大括號包圍,即完成字典型別。字典顧名思義,就像我們使用的字典,可以根據英文單字查詢到中文解釋,例如book 對應到 「書本」,如果用字典語法可以寫成 {'book':'書本'}。真實的字典是依規則排序以方便查詢,但是Python 中字典的元素並非依鍵值排序,而是依插入順序儲存的,其語法如下:

字典 = {鍵1:值1, 鍵2:值2, …}
  1. 鍵必須是唯一而且不可變的,而鍵可以使用的型別為數值、字串或元組。
  2. 值可以是任何資料型別,除了常用型別外,串列、元組、字典…等也可以。

字典基本操作

字典在程式中可以進行元素的新增、修改及刪除等操作,語法如下:

功能語法說明
修改語法:字典[鍵] = 新值
刪除語法:del 字典[鍵] #刪除字典中某一元素
語法:del 字典 #刪除整個字典
新增語法:字典[新鍵] = 值

[例] 字典基本操作。 (dict_1.py)

字典進階操作

Python 的字典型別內建許多方法,方便我們進行進階操作。

方法功能說明
dict功能:建立一個新字典。
語法dict(元組或串列)
說明:運用 dict() 函式轉換元組和串列為字典,傳入資料必須成對,前者轉換成字典的鍵,後者轉換為值。
fromkeys功能:建立一個新字典。
語法dict.fromkeys(元組或串列[, 預設值])
說明:以 fromkeys 轉換元組或串列為字典的鍵,所有鍵的值為第二個參數,若省略第二參數,預設為「None」。
keys功能:傳回字典中所有的鍵。
語法字典.keys()
說明:顯示dict1字典中所有的鍵。
values功能:傳回字典中所有的值。
語法字典.values()
說明:顯示dict1字典中所有的值。
items功能:傳回字典中所有的元素。
語法字典.items()
說明:顯示dict1字典中所有的元素。
get功能:傳回字典中指定鍵所對應的值。
語法字典.get(key[, value])
說明get用來查詢「三月」是否為字典的鍵,如果有就傳回其對應的值;如果不是則傳回第二個參數,若省略第二參數,預設為「None」。
setdefault功能:傳回字典中指定鍵所對應的值,如果該鍵不存在會新增該鍵。
語法
字典.setdefault(key[, value])
說明setdefaultget的功能類似,其差異點是如果鍵不存在setdefault會新增以key為鍵的新元素。而第二個參數設定為該元素的值,若省略第二參數,預設值為「None」。
pop功能:傳回字典中指定鍵所對應的值,並刪除該元素。
語法字典.pop(key[, value])
說明:使用pop時,如果鍵存在,回傳其值,之後刪除此元素;如果鍵不存在,回傳第二參數,此時如果第二參數省略會產生錯誤訊息。若字典內無元素則會產生錯誤訊息。
popitem功能:隨機傳回字典中的元素,並刪除該元素。
語法字典.popitem()
說明:使用popitem不用參數,因為這方法會隨機傳回一個元素,再刪除該元素。該留意的是如果使用於空字典,會產生錯誤訊息。
update功能:以dict2中的元素,更新dict1
語法dict1.update(dict2)
說明update會將dict2dict1合併,假使dict2dict1不存在的鍵,則新增該元素到dict1;反之以dict2的值覆蓋dict1該元素的值。
clear功能:清除字典內所有元素。
語法字典.clear()
說明clear會刪除字典內所有元素,使其成為僅保留名稱的空字典。

[例] 字典進階操作。 (dict_2.py)

[簡例] 使用者可以輸入貨號,查詢品名和售價。如果該貨號不存在,則可以新增資料。 (檔名:search.py)

[結果]

# CASE1
請輸入貨號 : A003
貨號 : A003 品名: 冰棒售價 : 20 元
 
# CASE2
請輸入貨號 : A002
貨號 : A002 不存在
請輸入品名 : 豆干
請輸入售價 : 15
貨號 : A002 品名 : 豆干售價 : 15 元

相關主題與延伸閱讀