第 12 章 字典
(1) 字典
∗ 字串、串列、與字組都是循序資料集合 (Sequential collections)
▸ 資料按序排列,可利用索引 (Index) 來找到某個位置的資料
∗ 字典 (Dictionary):非循序資料集合
▸ 資料按對應 (Mapping) 方式排列,並利用鍵值 (Key) 找到某個對應的值
▸ 字典內容是可改變的 (Mutable)
(2) 字典操作
∗ 建立空字典:
emptyDict = dict()
emptyDict = {}
∗ 建立字典,例如水果庫存量:
inventory = {'apple':430, 'banana':312, 'orange':525}
▸ 每個字典項目為鍵與值的配對 (以冒號分隔):
'<key>':<value>
▸ 以 dict() 函式建立亦可:
inventory = dict(apple=430, banana=312, orange=525)
▸ 鍵值可以也可以是數字
students = {20:'張三', 21:'李四', 22:'王五'}
∗ 讀取項目,例如:
numApples = inventory['apple'] # 利用方括號語法
numApples = inventory.get('apple') # 也可利用 .get() 方法
numLemons = inventory['lemon'] # 使用方括號時,若找不到鍵值程式會當掉,KeyErrors: 'lemons'
numLemons = inventory.get('lemon') # 使用 .get() 方法時,若找不到鍵值程式不會當掉,會回覆 None
∗ 加入或修改項目,例如:
inventory['lemon'] = 100 # 利用方括號語法來新增項目或修改值
inventory.update({'lemon':100}) # 也可利用 .update() 方法
inventory.update({'lemon':100, 'watermelon'50}) # 使用 .update() 方法時,可一次加入或修改多個項目
∗ 刪除項目,例如:
del inventory['banana']
∗ 字典項目數量 (長度)
numItems = len(inventory)
∗ 字典是可變異的
inventory = {'apple': 430, 'banana': 312, 'orange': 525}
alias = inventory
alias.update({'apple':200})
print(inventory) # 200
∗ 以迴圈處理字典
▸ 迴圈變數即為字典的鍵:
inventory = {'apple':430, 'banana':312, 'orange':525}
for fruit in inventory:
inventory[fruit] += 100
print(inventory) # {'apple': 530, 'banana': 412, 'orange': 625}
▸ 亦可使用 .items() 方法,每次迴圈回覆一個字組:
inventory = {'apple':430, 'banana':312, 'orange':525}
for fruit, value in inventory.items():
print(f'{fruit}:{value}, ', end='')
print() # apple:430, banana:312, orange:525,
▸ 練習 1