Python 程式設計

第 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