`字典(dict)`是Python中的基本容器型態之一
## 1. 字典的基本組成
字典是一種**無序的**、**可變的**、可存儲**異質**對象的數據結構。字典的每一項由鍵(Key)和值(Value)兩部分構成,這種結構稱為鍵值對(key-value pair)。字典是由花括號{}包裹起來的一系列鍵值對。
## 2. 如何建立一個字典
在Python中,我們使用以下的方式來創建一個字典:
```py!
dict1 = {
'key1': 'value1',
'key2': 'value2',
'key3': 'value3'
}
```
也可以使用內建的dict函式來創建字典:
```py!
dict2 = dict(key1='value1', key2='value2', key3='value3')
```
### 字典生成式
字典生成式(Dictionary comprehension)是一種從其他數據結構創建字典的便捷方式。以下是一個例子:
```python!
numbers = [1, 2, 3, 4, 5]
square_dict = {n: n**2 for n in numbers}
```
在這個例子中,我們創建了一個將數字映射到其平方的字典。
## 3. 為什麼要使用字典
字典的主要優勢是其高效的查詢效能。當我們想要找到一個元素時,如果使用列表,我們需要從頭到尾查找,效能為O(n);而如果使用字典,我們可以直接用鍵查找到對應的值,效能接近O(1)。這一點在處理大量數據時特別重要。
## 4. 字典的常用函式
`dict.keys()`:返回一個包含所有鍵的視圖。
`dict.values()`:返回一個包含所有值的視圖。
`dict.items()`:返回一個包含所有鍵值對的視圖。
`dict.get(key, default)`:返回指定鍵的值,如果鍵不存在,則返回默認值。
`dict.update(other)`:將其他字典的鍵值對添加到字典中。
`dict.pop(key, default)`:刪除並返回指定鍵的值,如果鍵不存在,則返回默認值。
## 5. 如何遍歷一個字典
我們可以使用for循環來遍歷字典的鍵、值或鍵值對:
```python!
# 遍歷鍵
for key in dict1.keys():
print(key)
# 遍歷值
for value in dict1.values():
print(value)
# 遍歷鍵值對
for key, value in dict1.items():
print(f"Key: {key}, Value: {value}")
```
---
# 練習題
## 題目一:書本的價格
### 情境
假設你正在書店裡,你有一份書單,並且你想要知道每本書的價格。以下是你的書單和每本書的價格:
書單價格:`{'數學': 300, '國語': 250, '英文': 350}`
### 輸入說明
一個字串,代表你想要知道價格的書的名稱。
### 輸出說明
一個整數,代表該書的價格。
---
## 題目二:成績查詢系統
### 情境
班導師知道你有在學Python,他想請你幫他用程式建立一個學生的成績查詢系統,讓老師只要輸入學生名字,程式就會輸出該學生的成績。
### 輸入說明
第一行輸入一個正整數$n$,代表總共有$n$個學生
第二行輸入$n$個學生的名字
第三行輸入$n$個學生的成績
輸入範例:
```
3
Apirl Beck Carl
100 89 70
```
### 輸出說明
讓使用者輸入一個名字,如果有這個名字的資料就輸入該名字的分數,如果沒有則輸出`"查無此人"`
---
## 題目三:成績統計
老師將班上同學的績分為A, B, C, D, F,五種等級,老師希望你寫一個程式幫他統計,這五種等級的1.學生數量各有多少 2.最多的是那一個等級
### 輸入說明
輸入一個由ABCDF組成的字串
輸入範例:
```
ABCABCABCDCDCDFFAABCDF
```
### 輸出說明
輸出這五種等級的1.學生數量各有多少 2.最多的是那一個等級
輸出範例:
```
A: 5人
B: 4人
C: 6人
D: 4人
F: 3人
最多人的類別是C,共有6人
```