一区二区三区中文国产亚洲_另类视频区第一页_日韩精品免费视频_女人免费视频_国产综合精品久久亚洲

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

手機站
千鋒教育

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

千鋒教育

掃一掃進入千鋒手機站

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

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

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

python 字典操作方法詳解

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

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

注意,浮點數(shù)比較很不精確,因此千萬不要用浮點數(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的鍵值對

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

info.pop('work')

print(info)

結(jié)果:

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

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

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,查找對應(yīng)的value,如果給定的可以在字典中無,則返回None

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

a=info.get('age')

print(a)

結(jié)果:

32

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

同時在字典中增加'test':None鍵值對

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'}

八、返回鍵,值,鍵值對

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

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

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

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

#1,請循環(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.請循環(huán)輸出所有的key

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

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

d.請在字典中添加一個鍵值對,"k4":"v4",輸出添加后的字典

e.請在修改字典中“k1”對應(yīng)的值為“alex”,輸出修改后的字典

f.請在k3對應(yīng)的值中追加一個元素44,輸出修改后的字典

g.請在k3對應(yīng)的值的第1個位置插入個元素18,輸出修改后的字典

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

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

foriindic:

print(i)

foriindic.keys():

print(i)

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

foriindic.values():

print(i)

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

fori,jindic.items():

print(i,j)

#d.請在字典中添加一個鍵值對,"k4":"v4",輸出添加后的字典

dic2={'k4':'v4'}

dic.update(dic2)

print(dic)

dic['k4']='v4'

print(dic)

#e.請在修改字典中“k1”對應(yīng)的值為“alex”,輸出修改后的字典

dic['k1']='alex'

print(dic)

f.請在k3對應(yīng)的值中追加一個元素44,輸出修改后的字典

dic['k3'].append(44)

print(dic)

#g.請在k3對應(yīng)的值的第1個位置插入個元素18,輸出修改后的字典

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

print(dic)

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

反序:reverse=True

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

print(mylist)

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

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這個數(shù)據(jù)結(jié)構(gòu)由于hash的特性,是無序的,這在有時候會給我們帶來一些麻煩,幸運的時,在collections模塊中為我們提供了OrderedDict,當(dāng)你需要獲取一個有序的字典對象時,試用它即可。

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

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é)果來看,如果是普通的字典,即使傳入的順序不一樣,但是依然是相同的字典;如果是OrderedDict,傳入的順序不一樣,那么得到的字典是不一樣的。

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

聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(nèi)將與您1V1溝通
免費領(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