引言
字典 是Python 內建的一種資料結構,它便於語義化表達一些結構資料,字典是開發中常用的一種資料結構
字典介紹
- 字典使用花括號
{}
或dict
來建立,字典是可以巢狀使用的 - 字典是成對出現的,字典以鍵(key)值(value)對形式體現
- 鍵與值之間用冒號
:
分隔,每個鍵值對之間用逗號,
分隔開 - 字典的
key
是唯一的,而value
可以重複出現 - 字典的
key
不使用中文或其他字元,這是業內約定俗成的做法
建立字典
字典可以使用花括號
{}
或dict
函式來建立
1. 使用花括號 {}
建立字典
注意:字典每個鍵值對之間要用逗號 ,
分隔開
emp = {'name':'張三' , 'age':22 , 'sex':'男'}
print(emp)
# 執行結果:{'name': '張三','age': 22, 'sex': '男'}
# 字典列印時會將花括號也列印出來
print(type(emp))
# 執行結果:<class 'dict'>
# 從以上列印型別可以看出變數屬於 dict 字典型別
2-1. 使用 dict
函式建立字典
dict
是 Python 的內建函式,使用該函式建立列表時,key 不需要加引號dict
函式的效果和以上示例中的執行效果是相同的
emp = dict(name='張三' , age=22,sex='男')
print(emp)
# 執行結果:{'name': '張三', 'age': 22, 'sex': '男'}
2-2. fromkeys
方法
fromkeys
方法與dict
函式搭配使用,它允許使用序列來建立字典 key
emp = dict.fromkeys(['name' , 'age' , 'sex'])
print(emp)
# 執行結果:{'name': None, 'age': None, 'sex': None}
如果不為 fromkeys
方法指定預設值,預設情況下返回 None
如果需要改變這種情況,只需在 fromkeys
方法第二個引數傳入預設值即可,如下示例
emp = dict.fromkeys(['name' , 'age' , 'sex'] , 'N/A')
print(emp)
# 執行結果:{'name': 'N/A', 'age': 'N/A', 'sex': 'N/A'}
預設值 N/A
不是必須的,可按照專案實際需求傳入對應值,或不傳入值
列表取值
字典取值有兩種方式
1. 方式一
在字典變數後面使用方括號傳入字典的 key 進行取值
這種方法有一個弊端:如果字典中不存在 key ,會報 KeyError
錯誤
emp = {'name':'張三' , 'age':22 , 'sex':'男'}
print(emp['name'])
# 執行結果:張三
2. 方式二
使用字典
get
方法取值
如果不存在 key ,返回 None
或自己指定的值,例如 N/A
,以下為示例程式碼
emp = {'name':'張三' , 'age':22 , 'sex':'男'}
v = emp.get('name')
print(v)
# 執行結果:張三
emp = {'name':'張三' , 'age':22 , 'sex':'男'}
v = emp.get('dept','其他部門')
print(v)
# 執行結果:其他部門
字典的寫操作
字典增刪改查操作
更新
Python 字典秉承:“有則更新,無則新增”原則
1. 更新字典 Value
emp = {'name':'張三' , 'age':22 , 'sex':'男' , 'dept':'研發部'}
emp['dept'] = '推广部'
print(emp)
# 執行結果:{'name': '張三', 'age': 22, 'sex': '男', 'dept': '推广部'}
2. 批量更新
使用
update()
方法批量更新字典,在該方法內傳入對應對應的 key 、value
emp = {'name':'張三' , 'age':22 , 'sex':'男' , 'dept':'研發部'}
emp.update(age=18 , dept='推广部')
print(emp)
# 執行結果:{'name': '張三', 'age': 18, 'sex': '男', 'dept': '推广部'}
新增
列表的新增操作和更新操作基本相同,Python 字典秉承:“有則更新,無則新增”原則
當字典存在對應的 key 時執行更新,當字典不存在對應的 key 時執行新增
1. 新增操作
emp = {'name': '張三', 'age': 22, 'sex': '男', 'dept': '研發部'}
emp['job'] = '銷售'
print(emp)
# 執行結果:{'name': '張三', 'age': 22, 'sex': '男', 'dept': '研發部', 'job': '銷售'}
2. 批量操作
emp = {'name': '張三', 'age': 22, 'sex': '男', 'dept': '研發部'}
emp.update(dept='推广部' , job='推廣員')
print(emp)
# 執行結果:{'name': '張三', 'age': 22, 'sex': '男', 'dept': '推广部', 'job': '推廣員'}
刪除
1. 使用 pop()
方法刪除
該方法刪除字典給定的鍵及對應的值
pop()
可返回值,返回值為被刪除的值
emp = {'name': '張三', 'age': 22, 'sex': '男', 'dept': '研發部'}
dept = emp.pop('dept')
print(emp)
# 執行結果:{'name': '張三', 'age': 22, 'sex': '男'}
print(dept)
# 執行結果:研發部
2. 使用 popitems()
刪除字典最後一個 kv
popitems()
返回的是一個元組
emp = {'name': '張三', 'age': 22, 'sex': '男', 'dept': '研發部'}
kv = emp.popitem()
print(emp)
# {'name': '張三', 'age': 22, 'sex': '男'}
print(kv)
# 執行結果:('dept', '研發部')
3. 清空列表 clear()
emp = {'name': '張三', 'age': 22, 'sex': '男', 'dept': '研發部'}
emp.clear()
print(emp)
# 執行結果:{}