@[toc]
1.字典介紹
- 每個字典元素都有鍵
(key)
和值(value)
兩個屬性 -
key
用于定義和標(biāo)識字典元素闰蚕,value
是字典元素對應(yīng)的值 -
value
可以是任意值;字典连舍、列表不能作為字典的key
- 字典是用
鍵-值(key-value)
存儲没陡,具有極快的查找速度 - 字典是無序的
和list
比較,dict
有以下幾個特點(diǎn):
- 查找和插入的速度極快索赏,不會隨著
key
的增加而變慢 - 需要占用大量的內(nèi)存盼玄,內(nèi)存浪費(fèi)多
注意:字典的key
必須是<font color=Red>不可變對象</font>
這是因為dict
根據(jù)key
來計算value
的存儲位置,如果每次計算相同的key
得出的結(jié)果不同潜腻,那dict
內(nèi)部就完全混亂了,這個通過key
計算位置的算法稱為哈希算法(Hash)
要保證hash
的正確性埃儿,作為key
的對象就不能變。在Python中融涣,字符串童番、整數(shù)等都是不可變的,因此威鹿,可以放心地作為key
剃斧,而list
是可變的,就不能作為key
2.定義字典
- 字典元素使用
{}
括起來 - 鍵和值之間由冒號
(:)
分隔忽你,元素間由逗號(,)
分隔
d={'name':'小明','sex':'男','age':'18'}
定義一個空字典
d={}
3.獲取字典長度
d={'name':'小明','sex':'男','age':'18'}
v=len(d)
print(v)
運(yùn)行結(jié)果
3
4.訪問字典元素
d={'name':'小明','sex':'男','age':'18'}
print(d['name'])
print(d['sex'])
print(d['age'])
運(yùn)行結(jié)果
小明
男
18
5.添加字典元素
d={'name':'小明','sex':'男','age':'18'}
d['score']=80
print(d)
運(yùn)行結(jié)果
{'name': '小明', 'sex': '男', 'age': '18', 'score': 80}
6.合并兩個字典
字典1.update(字典2)
d1={'name':'小明','sex':'男'}
d2={'age':'18','score':'80'}
d1.update(d2) #將d2合并到d1中幼东,合并時直接加到末尾
print(d1)
d1={'name':'小明','sex':'男'}
d2={'age':'18','score':'80'}
d2.update(d1) #將d1合并到d2中,合并時直接加到末尾
print(d2)
運(yùn)行結(jié)果
{'name': '小明', 'sex': '男', 'age': '18', 'score': '80'}
{'age': '18', 'score': '80', 'name': '小明', 'sex': '男'}
7.刪除字典元素
<1>字典.pop()
d={'name':'小明','sex':'男','age':'18'}
d.pop('sex')
print(d)
運(yùn)行結(jié)果
{'name': '小明', 'age': '18'}
<2>del 字典[鍵]
d={'name':'小明','sex':'男','age':'18'}
del d['name']
print(d)
運(yùn)行結(jié)果
{'sex': '男', 'age': '18'}
<3>隨機(jī)刪除
字典.popitem()
d={'name':'小明','sex':'男','age':'18'}
v=d.popitem()
print(d,v)
運(yùn)行結(jié)果
{'name': '小明', 'sex': '男'} ('age', '18')
8.判斷某個元素是否存在在字典里
<1>使用in
關(guān)鍵字判斷字典中是否存在指定鍵的元素
鍵 in 字典
d={'name':'小明','sex':'男','age':'18'}
print('name' in d)
print('number' in d)
運(yùn)行結(jié)果
True
False
<2>通過dict
提供的get()
方法科雳,如果key
不存在根蟹,可以返回None
,或者自己指定的value
d={'name':'小明','sex':'男','age':'18'}
v=d.get('name')
print(v)
v=d.get('number')
print(v)
v=d.get('number',-1)
print(v)
運(yùn)行結(jié)果
小明
None
-1
9.遍歷字典元素
for key in 字典.keys(): #遍歷字典的鍵
訪問 字典[key]
for value in 字典.values(): #遍歷字典的值
訪問 字典[value]
遍歷鍵
d={'name':'小明','sex':'男','age':'18'}
for key in d.keys():
print(key)
運(yùn)行結(jié)果
name
sex
age
遍歷值
for value in d.values():
print(value)
運(yùn)行結(jié)果
小明
男
18
遍歷鍵和值
for key in d.items():
print(key)
for key in d.keys():
print('鍵'+key+'的值:'+d[key])
運(yùn)行結(jié)果
('name', '小明')
('sex', '男')
('age', '18')
鍵name的值:小明
鍵sex的值:男
鍵age的值:18
10.字典的嵌套
訪問嵌套字典
字典[鍵][鍵]
d={'name':{'first':'小明','last':'小李'},'age':'30'}
print(d['name']['first'])
運(yùn)行結(jié)果
小明
11.根據(jù)序列炸渡,創(chuàng)建字典娜亿,并指定統(tǒng)一的值
dict.fromkeys(鍵,值)
v=dict.fromkeys(['123','666','good'],45)
print(v)
v=dict.fromkeys(['123','666','good'])
print(v)
運(yùn)行結(jié)果
{'123': 45, '666': 45, 'good': 45}
{'123': None, '666': None, 'good': None}
12.設(shè)置值
字典.setdefault()
- 已存在蚌堵,不設(shè)置,獲取當(dāng)前
key
對應(yīng)的值 - 不存在,設(shè)置吼畏,獲取當(dāng)前
key
對應(yīng)的值
d={'k1':123,'k2':'apple'}
v=d.setdefault('k1','v1')
print(d,v)
v=d.setdefault('k3',666)
print(d,v)
運(yùn)行結(jié)果
{'k1': 123, 'k2': 'apple'} 123
{'k1': 123, 'k2': 'apple', 'k3': 666} 666
13.更新字典
字典.update()
d={'k1':123,'k2':'apple'}
d.update({'k1':1111,'k3':666})
print(d)
d={'k1':123,'k2':'apple'}
d.update(k1=111,k3=666)
print(d)
運(yùn)行結(jié)果
{'k1': 1111, 'k2': 'apple', 'k3': 666}
{'k1': 111, 'k2': 'apple', 'k3': 666}