字典是Python中一種非常實用的數據結構,用於存儲鍵值對(Key-Value Pair)。與列表不同,字典的鍵必須是不可變類型(如字符串、數字)且唯一,值可以是任意類型。通過“增、刪、改、查”操作,我們可以靈活地管理字典中的數據。
一、字典的基本定義¶
字典用 {} 創建,格式爲 {鍵1: 值1, 鍵2: 值2, ...}。例如:
student = {
'name': '小明',
'age': 18,
'gender': '男'
}
- 鍵(Key):唯一且不可變(如字符串、數字),用於定位值。
- 值(Value):可以是任意類型(數字、字符串、列表、字典等)。
二、字典的“增”:添加鍵值對¶
給字典新增鍵值對時,直接通過賦值操作實現(若鍵不存在則新增,若鍵已存在則修改)。
1. 直接賦值(新增/修改)¶
student = {'name': '小明', 'age': 18}
# 新增鍵值對(鍵不存在時)
student['gender'] = '男'
print(student) # 輸出:{'name': '小明', 'age': 18, 'gender': '男'}
# 修改已有鍵的值(鍵存在時)
student['age'] = 19
print(student) # 輸出:{'name': '小明', 'age': 19, 'gender': '男'}
三、字典的“刪”:刪除鍵值對¶
刪除操作用於移除字典中的某個鍵值對,常用方法有 del、pop()、popitem() 和 clear()。
1. del 語句:刪除指定鍵¶
student = {'name': '小明', 'age': 18, 'gender': '男'}
del student['age'] # 刪除鍵 'age'
print(student) # 輸出:{'name': '小明', 'gender': '男'}
- 注意:若鍵不存在,會報錯
KeyError。
2. pop() 方法:刪除並返回值¶
pop(key, default):若鍵存在,刪除並返回該鍵的值;若鍵不存在,返回 default(默認 None)。
student = {'name': '小明', 'age': 18}
# 刪除 'name' 並返回其值
name = student.pop('name')
print(name) # 輸出:小明
print(student) # 輸出:{'age': 18}
# 鍵不存在時指定默認值
score = student.pop('score', '未知')
print(score) # 輸出:未知
3. popitem() 方法:刪除最後一個鍵值對¶
Python 3.7+ 中,popitem() 刪除並返回最後插入的鍵值對(之前版本隨機刪除)。
student = {'name': '小明', 'age': 18, 'gender': '男'}
item = student.popitem() # 刪除最後一個鍵值對
print(item) # 輸出:('gender', '男')
print(student) # 輸出:{'name': '小明', 'age': 18}
4. clear() 方法:清空字典¶
student = {'name': '小明', 'age': 18}
student.clear() # 清空字典
print(student) # 輸出:{}
四、字典的“改”:修改已有鍵的值¶
若鍵已存在,通過賦值操作直接覆蓋舊值即可:
student = {'name': '小明', 'age': 18}
student['age'] = 19 # 修改 'age' 的值
print(student) # 輸出:{'name': '小明', 'age': 19}
- 本質:與“新增”操作一致(鍵存在則修改,不存在則新增)。
五、字典的“查”:獲取鍵對應的值¶
查詢值的方式有多種,推薦優先使用 get() 避免報錯。
1. 直接用鍵訪問(易報錯)¶
student = {'name': '小明', 'age': 18}
print(student['name']) # 輸出:小明
# print(student['score']) # 錯誤:KeyError: 'score'(鍵不存在)
2. get() 方法(安全查詢)¶
get(key, default):鍵存在則返回值,不存在則返回 default(默認 None)。
student = {'name': '小明', 'age': 18}
# 鍵存在時返回值
print(student.get('name')) # 輸出:小明
# 鍵不存在時返回默認值
score = student.get('score', '0分')
print(score) # 輸出:0分
3. 批量查詢鍵/值/鍵值對¶
keys():獲取所有鍵(返回視圖對象,可轉爲列表)。values():獲取所有值(返回視圖對象)。items():獲取所有鍵值對(返回元組視圖)。
student = {'name': '小明', 'age': 18, 'gender': '男'}
print(student.keys()) # 輸出:dict_keys(['name', 'age', 'gender'])
print(student.values()) # 輸出:dict_values(['小明', 18, '男'])
print(student.items()) # 輸出:dict_items([('name', '小明'), ('age', 18), ('gender', '男')])
# 轉爲列表便於遍歷
print(list(student.keys())) # 輸出:['name', 'age', 'gender']
六、注意事項¶
- 鍵必須唯一且不可變:重複鍵會被覆蓋,列表、集合不能作爲鍵。
my_dict = {[1,2]: 'test'} # 錯誤:列表不可作爲鍵
- 避免鍵不存在導致的錯誤:查詢時優先用
get(),而非直接用鍵訪問。 - 修改與新增的統一性:
dict[key] = value既可以新增也可以修改,取決於鍵是否存在。
通過以上“增、刪、改、查”操作,你可以靈活管理字典中的數據。日常使用中,建議優先用 get() 查詢、pop() 刪除,並注意鍵的唯一性和不可變性。