字典 (dictionary) 的字面常數 (literal) 為大括弧圍起來以逗號相間的元素,每個元素以冒號分隔,冒號前為 key ,冒號後為 value ,字典就是 key:value 配對的資料型態 (data type) , key 必須是不可變的資料型態, value 則沒有限制
a = {1:2, 3:4}
print(a)
b = {"2":[1, 2], 6.9:(12, 34)}
print(b)
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:dict01.py
# 功能:示範用字面常數定義字典
# 作者:張凱慶
於命令列執行以上程式,結果如下
$ python3 dict01.py |
{1: 2, 3: 4} |
{'2': [1, 2], 6.9: (12, 34)} |
$ |
字典跟串列 (list) 的差別在於字典可自訂索引值,也就是 key ,串列則是從 開始的索引值,因此當資料用 key 當索引值比較直覺的時候,就能用字典取代串列當資料結構 (data structure) 。
建立字典除了字面常數外,也能用字典型態的建構子 (constructor) 建立變數 (variable) ,注意字典的建構子 dict() 都採英文小寫字母,因此也被歸類到內建函數 (built-in function) ,有三種參數 (parameter) 版本。
- class dict(**kwarg)
- class dict(mapping, **kwarg)
- class dict(iterable, **kwarg)
我們直接以 Library Reference 中的實例說明如何建立字典變數,這裡,變數 a 、 b 、 c 、 d 、 e 是相同的字典, a 用的參數 one 等於 1 ,等號左邊的 one 就是 key ,等號右邊的 1 就是 value , b 是用字面常數, c 是用另一個內建函數 zip() 將兩個串列配對, d 是用串列中已配對好的序對, e 是在建構子中用字面常數
a = dict(one=1, two=2, three=3)
b = {'one': 1, 'two': 2, 'three': 3}
c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))
d = dict([('two', 2), ('one', 1), ('three', 3)])
e = dict({'three': 3, 'one': 1, 'two': 2})
print(a == b == c == d == e)
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:dict02.py
# 功能:示範用不同方式定義字典
# 作者:張凱慶
於命令列執行以上程式,結果如下
$ python3 dict02.py |
True |
$ |
字典的基本操作跟序列 (sequence) 很類似,這裡須注意,字典變數用中括弧圍住的是 key ,這樣就可以存取 value 或設定 value ,如果該 key 不存在於原本的字典中,又用指派運算子 (assignment operator) 設定 value ,該字典變數就會新增這個 key:value 元素,例如
a = {}
print(a)
a[1] = 1
print(a)
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:dict03.py
# 功能:示範在字典中建立 key:value 資料
# 作者:張凱慶
於命令列執行以上程式,結果如下
$ python3 dict03.py |
{} |
{1: 1} |
$ |
字典也有很多方法 (method) 可用,例如 clear() 方法清空字典, pop() 移除指定 key 的元素等
- iter(d)
- clear()
- copy()
- fromkeys()
- get()
- items()
- keys()
- pop()
- popitem()
- setdefault()
- update()
- values()
關於字典相關方法的詳細解說,請參考 10.7 字典 dict 。
相關教學影片