字典的操作
## Python 字典是內建類別
在 Python 中,字典(`dict`)不是單純的資料格式,而是一個由 Python 內建的**類別(class)**。我們可以使用 `dict` 建立字典物件:
```python
student = {"name": "小明", "age": 18}
print(type(student))
# <class 'dict'>
```
字典以「**鍵(key): 值(value)**」的形式儲存資料:
```python
{"name": "小明", "age": 18}
```
- `name`、`age` 是鍵
- `"小明"`、`18` 是值
- 鍵必須是唯一且不可變的,例如字串、數字或元組
- 值可以是任何型別
- Python 3.7 之後,字典會保留元素加入的順序
也可以透過建構函式建立字典:
```python
person = dict(name="小華", age=20)
print(person)
# {'name': '小華', 'age': 20}
```
## 常見的字典方法
| 方法 | 說明 | 範例 |
|---|---|---|
| `get(key, default)` | 取得鍵的值,不存在時回傳預設值 | `d.get("name", "未知")` |
| `keys()` | 取得所有鍵 | `d.keys()` |
| `values()` | 取得所有值 | `d.values()` |
| `items()` | 取得所有鍵值配對 | `d.items()` |
| `update(other)` | 新增或更新多筆資料 | `d.update({"age": 20})` |
| `pop(key)` | 移除指定鍵並回傳其值 | `d.pop("age")` |
| `popitem()` | 移除並回傳最後加入的鍵值配對 | `d.popitem()` |
| `setdefault(key, default)` | 鍵不存在時新增,並回傳值 | `d.setdefault("city", "台北")` |
| `clear()` | 清空字典 | `d.clear()` |
| `copy()` | 建立字典的淺層複本 | `new_d = d.copy()` |
### 基本操作範例
```python
user = {
"name": "小美",
"age": 25
}
# 讀取資料
print(user["name"])
# 新增資料
user["city"] = "台中"
# 修改資料
user["age"] = 26
# 使用 get,避免鍵不存在時發生 KeyError
print(user.get("email", "尚未提供"))
# 走訪字典
for key, value in user.items():
print(key, value)
```
## 實務範例一:統計文字中的單字出現次數
字典很適合用來建立「資料 → 次數」的對應關係。
```python
text = "apple banana apple orange banana apple"
word_count = {}
for word in text.split():
word_count[word] = word_count.get(word, 0) + 1
print(word_count)
# {'apple': 3, 'banana': 2, 'orange': 1}
```
這裡:
- 鍵是單字
- 值是該單字出現的次數
- `get(word, 0)` 可在單字尚未出現時,先取得 `0`
也可以使用 `collections.Counter`:
```python
from collections import Counter
word_count = Counter(text.split())
print(word_count)
```
## 實務範例二:依商品編號查詢商品資訊
可以使用字典快速查詢商品資料。
```python
products = {
"A001": {"name": "鍵盤", "price": 1200, "stock": 10},
"A002": {"name": "滑鼠", "price": 600, "stock": 25},
"A003": {"name": "螢幕", "price": 5000, "stock": 5}
}
product_id = "A002"
product = products.get(product_id)
if product is not None:
print(f"商品名稱:{product['name']}")
print(f"價格:{product['price']} 元")
print(f"庫存:{product['stock']} 件")
else:
print("找不到此商品")
```
輸出:
```text
商品名稱:滑鼠
價格:600 元
庫存:25 件
```
在這個例子中:
- 外層字典以商品編號作為鍵
- 內層字典儲存商品名稱、價格與庫存
- 使用 `get()` 查詢時,即使商品編號不存在,也不會立即產生錯誤
字典的核心特色是透過鍵快速存取資料,因此常用於資料查詢、統計、設定檔、JSON 資料與快取等情境。
相關學習地圖、教學課程
Python 資料工程
Python 後端工程、資料庫