千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁(yè)  >  技術(shù)干貨  > python 字典操作方法詳解

python 字典操作方法詳解

來(lái)源:千鋒教育
發(fā)布人:xqq
時(shí)間: 2023-11-07 20:09:59 1699358999

字典是一種通過名字或者關(guān)鍵字引用的得數(shù)據(jù)結(jié)構(gòu),key類型需要時(shí)被哈希,其鍵可以是數(shù)字、字符串、元組,這種結(jié)構(gòu)類型也稱之為映射。字典類型是Python中唯一內(nèi)建的映射類型。

注意,浮點(diǎn)數(shù)比較很不精確,因此千萬(wàn)不要用浮點(diǎn)數(shù)作為key!

一、字典的鍵不能是list類型:

list=[1,2,3,4]

info2={list:'number'}

結(jié)果:

Traceback(mostrecentcalllast):

File"D:/字典.py",line2,in

info2={list:'number'}

TypeError:unhashabletype:'list'

二、list/set/dict均不可被哈希,int、float、str、tuple:是可以哈希的

1list.__hash__;

#結(jié)果為None

2set.__hash__;

#結(jié)果為None

3dict.__hash__;

#結(jié)果為None

4print(int.__hash__);

#

5print(float.__hash__);

#

6print(str.__hash__);

#

7print(tuple.__hash__);

#

三、增

info={'name':'jamnes','age':'32','work':'basketplayer'}

info['sex']='fale'

print(info)

結(jié)果:

{'name':'jamnes','age':'32','work':'basketplayer','sex':'fale'}

四、刪

4-1pop():刪除指定key的鍵值對(duì)

nfo={'name':'jamnes','age':'32','work':'basketplayer'}

info.pop('work')

print(info)

結(jié)果:

{'name':'jamnes','age':'32'}

4-2clear():清除所有的鍵值對(duì)

info={'name':'jamnes','age':'32','work':'basketplayer'}

info.clear()

print(info)

結(jié)果:

{}

4-3setdefault():刪除指定的元素,如果沒有,則返回none

info={'name':'jamnes','age':'32','work':'basketplayer'}

info.setdefault('son')

print(info)

結(jié)果:

None

五、改

info={'name':'jamnes','age':'32','work':'basketplayer'}

info['age']='33'

print(info)

結(jié)果:

{'name':'jamnes','age':'33','work':'basketplayer'}

六、查

6-1get():通過給定的key,查找對(duì)應(yīng)的value,如果給定的可以在字典中無(wú),則返回None

info={'name':'jamnes','age':'32','work':'basketplayer'}

a=info.get('age')

print(a)

結(jié)果:

32

6-2setdefault():通過給定的key,查找對(duì)應(yīng)的value,如果給定的可以在字典中無(wú),則返回None,

同時(shí)在字典中增加'test':None鍵值對(duì)

info={'name':'jamnes','age':'32','work':'basketplayer'}

a=info.setdefault('age')

print(a)

print(info)

b=info.setdefault('sex')

print(b)

print(info)

結(jié)果:

32

{'name':'jamnes','age':'32','work':'basketplayer'}

None

{'name':'jamnes','age':'32','work':'basketplayer','sex':None}

七、更新

7-1update()=

一,更新里面有的信息,就是改變

info={'name':'jamnes','age':'32','work':'basketplayer'}

info2={'name':'wade','age':'33','work':'basketplayer'}

info.update(info2)

print(info)

結(jié)果:

{'name':'wade','age':'33','work':'basketplayer'}

二,更新里面沒有的信息,就是添加

info={'name':'jamnes','age':'32','work':'basketplayer'}

info2={'honor':'3champions'}

info.update(info2)

print(info)

結(jié)果:

{'name':'jamnes','age':'32','work':'basketplayer','honor':'3champions'}

八、返回鍵,值,鍵值對(duì)

keys():以列表(list)返回字典中的所有鍵(key),字典是無(wú)序的,所以這個(gè)list返回的不是定義字典的順序

values():以列表(list)返回字典中的所有值,這個(gè)list的順序跟keys()返回的list順序是一一對(duì)應(yīng)的

items():以列表(list)返回可遍歷的(鍵,值)元組數(shù)組,這個(gè)tuple的list包含了dictionary的所有數(shù)據(jù)

dict={'k1':'v1','k2':'v2','k3':'v3'}

#1,請(qǐng)循環(huán)遍歷除所有的key

forkeysindict.keys():

print(keys)

#遍歷出所有的value

forvalueindict.values():

print(value)

#遍歷出

forkey,valueindict.items():

print(key+':'+value)

#結(jié)果:

k1

k2

k3

v1

v2

v3

k1:v1

k2:v2

k3:v3

九、練習(xí)字典

dic={'k1':"v1","k2":"v2","k3":[11,22,33]}

a.請(qǐng)循環(huán)輸出所有的key

b.請(qǐng)循環(huán)輸出所有的value

c.請(qǐng)循環(huán)輸出所有的key和value

d.請(qǐng)?jiān)谧值渲刑砑右粋€(gè)鍵值對(duì),"k4":"v4",輸出添加后的字典

e.請(qǐng)?jiān)谛薷淖值渲小発1”對(duì)應(yīng)的值為“alex”,輸出修改后的字典

f.請(qǐng)?jiān)趉3對(duì)應(yīng)的值中追加一個(gè)元素44,輸出修改后的字典

g.請(qǐng)?jiān)趉3對(duì)應(yīng)的值的第1個(gè)位置插入個(gè)元素18,輸出修改后的字典

dic={'k1':"v1","k2":"v2","k3":[11,22,33]}

#a.請(qǐng)循環(huán)輸出所有的key

foriindic:

print(i)

foriindic.keys():

print(i)

#b.請(qǐng)循環(huán)輸出所有的value

foriindic.values():

print(i)

c.請(qǐng)循環(huán)輸出所有的key和value

fori,jindic.items():

print(i,j)

#d.請(qǐng)?jiān)谧值渲刑砑右粋€(gè)鍵值對(duì),"k4":"v4",輸出添加后的字典

dic2={'k4':'v4'}

dic.update(dic2)

print(dic)

dic['k4']='v4'

print(dic)

#e.請(qǐng)?jiān)谛薷淖值渲小発1”對(duì)應(yīng)的值為“alex”,輸出修改后的字典

dic['k1']='alex'

print(dic)

f.請(qǐng)?jiān)趉3對(duì)應(yīng)的值中追加一個(gè)元素44,輸出修改后的字典

dic['k3'].append(44)

print(dic)

#g.請(qǐng)?jiān)趉3對(duì)應(yīng)的值的第1個(gè)位置插入個(gè)元素18,輸出修改后的字典

dic['k3'].insert(0,18)

print(dic)

十、根據(jù)字典的鍵值進(jìn)行排序

反序:reverse=True

mylist=['學(xué)習(xí)','工作','玩耍','學(xué)習(xí)','工作','工作']

print(mylist)

#list_element是另外一個(gè)列表,里面的內(nèi)容是list_element里面的無(wú)重復(fù)項(xiàng)

myset=set(mylist)

mydict={}

foriteminmyset:

res=mylist.count(item)

sample={item:res}

#print(res)

#print("the%dhasfound%d"%(item,mylist.count(item)))

mydict.update(sample)

print(mydict)

print(sorted(mydict.items(),key=lambdamydict:mydict[1],reverse=True))

十一、OrderedDict的使用

在Python中,dict這個(gè)數(shù)據(jù)結(jié)構(gòu)由于hash的特性,是無(wú)序的,這在有時(shí)候會(huì)給我們帶來(lái)一些麻煩,幸運(yùn)的時(shí),在collections模塊中為我們提供了OrderedDict,當(dāng)你需要獲取一個(gè)有序的字典對(duì)象時(shí),試用它即可。

python中的字典(dict)對(duì)象可使用“鍵”,“值”對(duì)的形式存取值,但默認(rèn)的內(nèi)置類型字典中的元素是無(wú)序的。Collections模塊下的OrderedDict類實(shí)現(xiàn)了對(duì)字典的排序,OrderedDict是dict的一個(gè)子類,實(shí)現(xiàn)了對(duì)字典排序的功能,下面看一下兩者數(shù)據(jù)類型的對(duì)比。

fromcollectionsimportOrderedDict

print('NormalDictionary:')

d={}

d['name']='v1'

d['age']='v2'

d['job']='v3'

d['address']='v4'

d1={}

d1['job']='v3'

d1['address']='v4'

d1['name']='v1'

d1['age']='v2'

print(d)

print(d1)

print(d==d1)

print('OrderedDict:')

d2=OrderedDict()

d2['name']='v1'

d2['age']='v2'

d2['job']='v3'

d3=OrderedDict()

d3['job']='v3'

d3['age']='v2'

d3['name']='v1'

print(d2)

print(d3)

print(d2==d3)

輸出結(jié)果:

NormalDictionary:

{'name':'v1','age':'v2','job':'v3','address':'v4'}

{'job':'v3','address':'v4','name':'v1','age':'v2'}

True

OrderedDict:

OrderedDict([('name','v1'),('age','v2'),('job','v3')])

OrderedDict([('job','v3'),('age','v2'),('name','v1')])

False

從結(jié)果來(lái)看,如果是普通的字典,即使傳入的順序不一樣,但是依然是相同的字典;如果是OrderedDict,傳入的順序不一樣,那么得到的字典是不一樣的。

以上內(nèi)容為大家介紹了python字典操作方法詳解,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。

聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
Python 決策樹算法思想

決策樹(decisiontree)是一個(gè)樹結(jié)構(gòu)(可以是二叉樹或者非二叉樹)。決策樹分為分類樹和回歸樹兩種,分類樹對(duì)離散變量做決策樹,回歸樹對(duì)連續(xù)變量做...詳情>>

2023-11-07 23:10:00
Python C4.5算法

ID3算法的作者昆蘭基于上面的不足,對(duì)ID3算法做了改進(jìn),這就是C4.5算法,也許你會(huì)問,為什么不叫ID4,ID5之類的名字呢?那是因?yàn)闆Q策樹當(dāng)時(shí)太火...詳情>>

2023-11-07 23:02:48
Python 面向過程

python面向過程優(yōu)點(diǎn):復(fù)雜的問題流程化,進(jìn)而簡(jiǎn)單化(一個(gè)復(fù)雜的問題,分成一個(gè)個(gè)小的步驟去實(shí)現(xiàn),實(shí)現(xiàn)小的步驟將會(huì)非常簡(jiǎn)單)舉個(gè)典型的面向過程...詳情>>

2023-11-07 22:55:36
Python編程規(guī)范的重要性

首先談一下注釋:注釋不止是為了自己以后看的更清楚,還是為了以后的開發(fā)人員所準(zhǔn)備的,其實(shí)一段時(shí)間后,當(dāng)需要對(duì)程序做一些修改或者是改正某個(gè)...詳情>>

2023-11-07 22:37:35
Python 基本語(yǔ)句

1.條件語(yǔ)句在進(jìn)行邏輯判斷時(shí),我們需要用到條件語(yǔ)句,Python提供了if、elif、else來(lái)進(jìn)行邏輯判斷。格式如下所示:if判斷條件1:執(zhí)行語(yǔ)句1...elif...詳情>>

2023-11-07 22:30:23