Python 基礎 4-1 字典入門

瘋狂的大志GD發表於2019-09-13

引言

字典 是Python 內建的一種資料結構,它便於語義化表達一些結構資料,字典是開發中常用的一種資料結構

字典介紹

  1. 字典使用花括號 {}dict 來建立,字典是可以巢狀使用的
  2. 字典是成對出現的,字典以鍵(key)值(value)對形式體現
  3. 鍵與值之間用冒號 : 分隔,每個鍵值對之間用逗號 , 分隔開
  4. 字典的 key 是唯一的,而 value 可以重複出現
  5. 字典的 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)
# 執行結果:{}

資料之心

微信公眾號「資料之心」

相關文章