文章目錄
- 1. 字典簡介
- 2. 字典的使用
- 2.1 字典創建
- 2.2 字典值獲取
- 2.3 字典值修改
- 2.4 字典的刪除
- 3. 字典的遍歷
1. 字典簡介
字典(dict)屬于一種新的數據結構,稱為映射(mapping)。
- 字典的作用和列表類似,但是查詢性能比列表好;
- 在字典中每個元素都有一個唯一的名字(key),可以通過這個名字進行快速查找指定元素(value),字典也稱為鍵值對(key-value)結構;
- 字典中可以有多個鍵值對,每個鍵值對稱為一項(item)
2. 字典的使用
2.1 字典創建
- 使用 {[key:value,key:value]} 來創建字典,key,value不傳時創建的是空字典
d = {} # 創建空字典print(d,type(d))# 結果:
{} <class 'dict'>***Repl Closed***
- 字典的鍵可以是任意的不可變對象(int、str、bool、tuple…)
- 字典的鍵不能重復,如果重復,后面出現的會替換掉前面的
d = {
'sort':1,
'name':'張三',
'name':'李四',
'age':25,
'sex':'male',
}print(d)# 結果:
{'sort': 1, 'name': '李四', 'age': 25, 'sex': 'male'}***Repl Closed***
- 使用dict()函數創建字典
這種方式創建的字典,key都是字符串
d = dict(sort = 1,name = '張三',age = 25)
print(d)# 結果:
{'sort': 1, 'name': '張三', 'age': 25}***Repl Closed***
- 將一個包含雙值子序列的序列轉換為字典
雙值序列指的值序列中有且只有兩個元素
d = dict([('sort',1),('name','張三'),('age',25)])
print(d)# 結果:
{'sort': 1, 'name': '張三', 'age': 25}***Repl Closed***
2.2 字典值獲取
- 通過 d[key] 的方式獲取值
如果key不存在,則會報 KeyError的錯
d = {
'sort':1,
'name':'張三',
'name':'李四',
'age':25,
'sex':'male',
}# 根據key獲取值
print(d['sort'])
print(d['name'])
print(d['age'])
print(d['sex'])# 結果:
1
李四
25
male***Repl Closed***
- get(key[,default]) 根據鍵來獲取字典中的值
如果過去的鍵在字典中不存在,會返回None,如果default傳遞了值,key不存在時則返回設置的默認值
d = {
'sort':1,
'name':'張三',
'name':'李四',
'age':25,
'sex':'male',
}print(d.get('age'))
print(d.get('add','默認值'))# 結果:
25
默認值***Repl Closed***
2.3 字典值修改
- 語法:d[key] = value
當key存在時,將key對應的值修改為value,如果key不存在,則直接在字典中增加
d = {
'sort':1,
'name':'張三',
'name':'李四',
'age':25,
'sex':'male',
}d['name'] = '王五'
d['add'] = 'World'print(d)# 結果:
{'sort': 1, 'name': '王五', 'age': 25, 'sex': 'male', 'add': 'World'}***Repl Closed***
- setdefault(key[,default]) 向字典中添加key-value,這個方法有返回值
如果key已經存在字典中,則返回key的值,不對字典進行任何操作
如果key不存在,則向字典中添加這個key,并設置value
d = {
'sort':1,
'name':'張三',
'name':'李四',
'age':25,
'sex':'male',
}result = d.setdefault('name','趙六')
print(result)result = d.setdefault('add','world')
print(result)
print(d)# 結果:
李四
world
{'sort': 1, 'name': '李四', 'age': 25, 'sex': 'male', 'add': 'world'}***Repl Closed***
- update([other]) 將其它字典中的key-value添加到當前字典中
注意: 如果兩個字典中存在相同key,那么值會被替換
a = {'id':1,'name':'Mike','score':100}
a_2 = {'time':'2025-03','user':'Json'}a.update(a_2)
print('輸出a:',a)# 相同 key會被替換
d = {'sort':1,'name':'張三','age':25,'sex':'male'}
d_2 = {'sort':2,'name':'王五','age':26,'sex':'male'}d.update(d_2)
print('輸出d:',d)# 結果:
輸出a: {'id': 1, 'name': 'Mike', 'score': 100, 'time': '2025-03', 'user': 'Json'}
輸出d: {'sort': 2, 'name': '王五', 'age': 26, 'sex': 'male'}***Repl Closed***
2.4 字典的刪除
- 使用del d[key] 刪除字典中key-value
key不存在時會報錯
d = {'sort':1,'name':'張三','age':25,'sex':'male'}del d['sort']
print('輸出d:',d)# 結果
輸出d: {'name': '張三', 'age': 25, 'sex': 'male'}***Repl Closed***
- popitem() 隨機刪除字典中一個鍵值對,一般都是刪除最后一個鍵值對
- 這個方法有返回值,會將刪除的key-value作為一個元組返回
- 如果字典為空時調用,會報錯
d = {'sort':1,'name':'張三','age':25,'sex':'male'}d.popitem()
print('輸出d:',d)# 結果
輸出d: {'sort': 1, 'name': '張三', 'age': 25}***Repl Closed***
- pop(key[,default]) 根據key 刪除字典中的項
- 這個方法有返回值,會將被刪除的值返回
- 如果key不存在字典中,會報錯,如果指定了默認值,key不存在時會返回默認值
d = {'sort':1,'name':'張三','age':25,'sex':'male'}res = d.pop('sort')
res_add = d.pop('add','默認值')print('輸出d:',d)
print('輸出res:',res)
print('輸出res_add:',res_add)# 結果:
輸出d: {'name': '張三', 'age': 25, 'sex': 'male'}
輸出res: 1
輸出res_add: 默認值***Repl Closed***
- clear() 清空字典
d = {'sort':1,'name':'張三','age':25,'sex':'male'}d.clear()
print('輸出d:',d)# 結果
輸出d: {}***Repl Closed***
- copy() 用于對字典進行淺復制
- 復制出來的對象是獨立的,修改一個不會影響另外一個
- 淺復制會簡單的復制對象內部的值,如果字典中的值也是一個可變對象,這個可變對象不會被復制
d = {'sort':1,'name':'張三','age':25,'sex':'male'}
d_2 = d.copy()print('輸出d:',d,id(d))
print('輸出d_2:',d_2,id(d_2))# 結果
輸出d: {'sort': 1, 'name': '張三', 'age': 25, 'sex': 'male'} 2576443365312
輸出d_2: {'sort': 1, 'name': '張三', 'age': 25, 'sex': 'male'} 2576443758976***Repl Closed***
- len() 獲取字典中鍵值對的個數
d = {
'sort':1,
'name':'張三',
'name':'李四',
'age':25,
'sex':'male',
}print(len(d))# 結果:
4***Repl Closed***
- in 和 not in 檢查字典中是否包含指定的鍵
d = {
'sort':1,
'name':'張三',
'name':'李四',
'age':25,
'sex':'male',
}print('字典中是否包含age:','age' in d)
print('字典中是否包含add:','add' in d)# 結果
字典中是否包含age: True
字典中是否包含add: False***Repl Closed***
3. 字典的遍歷
- keys() 該方法會返回字典的所有key
這個方法會返回一個序列,序列中會包含序列中所有的鍵
d = {'sort':1,'name':'張三','age':25,'sex':'male'}
d_keys = d.keys()print('輸出:',d_keys)# 結果:
輸出: dict_keys(['sort', 'name', 'age', 'sex'])***Repl Closed***# 遍歷獲取所有值
d = {'sort':1,'name':'張三','age':25,'sex':'male'}for s in d.keys() : print(d[s])# 結果
1
張三
25
male***Repl Closed***
- values() 該方法會返回字典的所有的值
# 遍歷獲取所有值
d = {'sort':1,'name':'張三','age':25,'sex':'male'}for s in d.values() : print(s)# 結果
1
張三
25
male***Repl Closed***
- items() 該方法會返回字典中的所有項,返回形式為序列,序列中包含雙值子序列
d = {'sort':1,'name':'張三','age':25,'sex':'male'}for s,v in d.items() : print(s,':',v)# 結果:
sort : 1
name : 張三
age : 25
sex : male***Repl Closed***