一、前言
在 Python 中,字典(dict) 是一種非常常用的數據結構,以鍵值對(Key-Value Pair)形式存儲數據,支持快速查找、插入和刪除操作。
本文將系統性地介紹 Python 字典中常見的查詢操作方法,包括如何訪問元素、判斷鍵是否存在、獲取所有鍵/值/項、遍歷查詢等,并結合大量代碼示例幫助你全面掌握字典查詢的核心技能。
二、基本查詢操作
1. 使用方括號?[]
?查詢指定鍵的值
這是最直接的查詢方式:
student = {'name': 'Alice', 'age': 20, 'major': 'Computer Science'}
print(student['name']) # Alice
print(student['age']) # 20
?? 如果鍵不存在,會拋出
KeyError
異常。
2. 使用?.get()
?方法安全查詢
推薦用于避免程序崩潰:
print(student.get('name')) # Alice
print(student.get('gender')) # None
print(student.get('gender', 'not found')) # not found
? 特點:
- 鍵不存在時返回?
None
?或自定義默認值; - 更加健壯,推薦在實際開發中優先使用。
3. 判斷某個鍵是否存在:in
?關鍵字
if 'age' in student:print("年齡信息存在")
else:print("年齡信息不存在")
? 避免 KeyError,是查詢前檢查的常用方式。
4. 獲取所有鍵、值、鍵值對
方法 | 描述 |
---|---|
.keys() | 返回所有鍵 |
.values() | 返回所有值 |
.items() | 返回鍵值對元組列表 |
print(student.keys()) # dict_keys(['name', 'age', 'major'])
print(student.values()) # dict_values(['Alice', 20, 'Computer Science'])
print(student.items()) # dict_items([('name', 'Alice'), ('age', 20), ('major', 'Computer Science')])
你可以將其轉換為列表進行進一步處理:
keys_list = list(student.keys())
print(keys_list) # ['name', 'age', 'major']
三、進階查詢技巧
1. 遍歷字典查詢
(1)只遍歷鍵
for key in student:print(key)
(2)同時遍歷鍵和值
for key, value in student.items():print(f"{key}: {value}")
輸出:
name: Alice
age: 20
major: Computer Science
2. 查詢多個鍵的值(可選默認值)
def get_multiple(d, keys, default=None):return [d.get(k, default) for k in keys]result = get_multiple(student, ['name', 'gender', 'age'], 'unknown')
print(result) # ['Alice', 'unknown', 20]
3. 多層嵌套字典的查詢
當字典結構復雜時,可以通過鏈式訪問或使用 get()
層層查詢:
data = {'user': {'id': 1,'profile': {'name': 'Bob','email': 'bob@example.com'}}
}# 普通訪問
print(data['user']['profile']['name']) # Bob# 安全訪問
print(data.get('user', {}).get('profile', {}).get('name')) # Bob
print(data.get('user', {}).get('profile', {}).get('gender', 'not found')) # not found
4. 查詢滿足條件的鍵值對(字典推導式)
可以使用字典推導式來篩選符合條件的鍵值對:
scores = {'math': 90, 'english': 75, 'physics': 85, 'chemistry': 60}
high_scores = {k: v for k, v in scores.items() if v >= 80}
print(high_scores) # {'math': 90, 'physics': 85}
四、常見問題與注意事項
問題 | 原因 | 解決方法 |
---|---|---|
報錯:KeyError | 訪問了不存在的鍵 | 使用?.get() ?或先用?in ?檢查 |
查詢結果為 None | 鍵不存在且未設置默認值 | 設置默認值參數 |
遍歷時修改字典報錯 | 在遍歷過程中刪除或添加鍵值對 | 使用副本遍歷:list(dict.items()) |
嵌套字典訪問出錯 | 未判斷中間層級是否存在 | 使用多重?.get() ?或函數封裝 |
五、總結對比表
操作 | 方法 | 是否安全 | 是否返回值 | 說明 |
---|---|---|---|---|
查詢鍵值 | d[key] | ? | ? | 鍵必須存在,否則拋異常 |
安全查詢 | d.get(key, default) | ? | ? | 推薦使用 |
判斷鍵是否存在 | key in d | ? | ? | 推薦作為前置判斷 |
獲取所有鍵 | d.keys() | ? | ? | 可轉為列表處理 |
獲取所有值 | d.values() | ? | ? | 可用于統計 |
獲取所有鍵值對 | d.items() | ? | ? | 遍歷最佳方式 |
遍歷查詢 | for key in d: ?/?for k, v in d.items(): | ? | ? | 支持多種遍歷方式 |
多條件篩選 | 字典推導式 | ? | ? | 靈活高效 |
嵌套查詢 | 鏈式?.get() | ? | ? | 推薦寫法 |
六、結語
感謝您的閱讀!如果你有任何疑問或想要分享的經驗,請在評論區留言交流!