dict python用法_Python_Dict用法梳理
一、 collections 中 defaultdict 的使用
1.一個(gè)字典映射多個(gè)值:
待處理字典:
l = [(‘a(chǎn)’,2),(‘b’,3),(‘a(chǎn)’,1),(‘b’,4),(‘a(chǎn)’,3),(‘a(chǎn)’,1),(‘b’,3)]
不用defaultdict時(shí)需要給字典的value設(shè)置默認(rèn)值(防止key對(duì)應(yīng)的value不存在):l?=?[('a',2),('b',3),('a',1),('b',4),('a',3),('a',1),('b',3)]
d?=?{}
for?key,value?in?l:
#?setdefault()方法用于獲取指定key對(duì)應(yīng)的value
#?如果該key不存在,則先將該key對(duì)應(yīng)的value設(shè)置為默認(rèn)值:[]
d.setdefault(key,[]).append(value)
print(d)
print(list(d.items()))
運(yùn)行結(jié)果:
{‘a(chǎn)’: [2, 1, 3, 1], ‘b’: [3, 4, 3]}
[(‘a(chǎn)’, [2, 1, 3, 1]), (‘b’, [3, 4, 3])]
有了defaultdict后,方便了很多:l?=?[('a',2),('b',3),('a',1),('b',4),('a',3),('a',1),('b',3)]
from?collections?import?defaultdict
#?創(chuàng)建defaultdict,設(shè)置由list()函數(shù)來(lái)生成默認(rèn)值
d1?=?defaultdict(list)
for?key,value?in?l:
#?直接訪(fǎng)問(wèn)defaultdict中指定key對(duì)應(yīng)的value即可。
#?如果該key不存在,defaultdict會(huì)自動(dòng)為該key生成默認(rèn)值
d1[key].append(value)
print(d1)
運(yùn)行結(jié)果:
defaultdict(, {‘a(chǎn)’: [2, 1, 3, 1], ‘b’: [3, 4, 3]})
2.統(tǒng)計(jì)字典中某個(gè)值出現(xiàn)的總和
列表中有很多字典,需要統(tǒng)計(jì)字典中相同的鍵對(duì)應(yīng)的值的和
利用 defaultdict 設(shè)置默認(rèn)值的方法 defaultdict(int)from?collections?import?defaultdict
d?=?defaultdict(int)
#以下四個(gè)key-value,對(duì)應(yīng)本人大學(xué)期間考的四六級(jí)分?jǐn)?shù)=_=
score?=?[{'cet4':547},{'cet6':450},{'cet6':464},{'cet6':437},{'cet6':445}]
for?s?in?score:
for?key,value?in?s.items():
d[key]?+=?value
print(d)
運(yùn)行結(jié)果:
defaultdict(, {‘cet4’: 547, ‘cet6’: 1796})
同理,統(tǒng)計(jì)字典中某個(gè)值出現(xiàn)的次數(shù)from?collections?import?defaultdict
d?=?defaultdict(int)
#以下四個(gè)key-value,對(duì)應(yīng)本人大學(xué)期間考的四六級(jí)分?jǐn)?shù)=_=
score?=?[{'cet4':547},{'cet6':450},{'cet6':464},{'cet6':437},{'cet6':445}]
for?s?in?score:
for?key,value?in?s.items():
d[key]?+=?1
print(d)
運(yùn)行結(jié)果:
defaultdict(, {‘cet4’: 1, ‘cet6’: 4})
二、collections 創(chuàng)建有序字典
字典dict是無(wú)序的,如果我們想要有序的dict,可以使用OrdereDict
OrderedDict 內(nèi)部維護(hù)著一個(gè)根據(jù)鍵插入順序排序的雙向鏈表。每次當(dāng)一個(gè)新的元素插入進(jìn)來(lái)的時(shí)候,它會(huì)被放到鏈表的尾部。對(duì)于一個(gè)已經(jīng)存在的鍵的重復(fù)賦值不會(huì)改變鍵的順序。
需要注意的是,一個(gè) OrderedDict 的大小是一個(gè)普通字典的兩倍,因?yàn)樗鼉?nèi)部維護(hù)著另外一個(gè)鏈表。
改變 key-value 的順序
move_to_end 還接收一個(gè)關(guān)鍵字參數(shù) last。last 默認(rèn)為T(mén)rue,當(dāng) last = False 的時(shí)候,表示將該鍵移動(dòng)到最前面。
刪除 key_value
如果我們要?jiǎng)h除有序字典中的 key-value, 可以使用 popitem 方法, popitem(last=True) 按照先進(jìn)后出的順序刪除 dict中的key-value,popitem(last=False) 按照先進(jìn)先出的規(guī)則刪除 dict 中的 key-value。
三、字典排序
1.按照key進(jìn)行排序
2.按照value進(jìn)行排序
四、通過(guò)某個(gè)關(guān)鍵字排序一個(gè)字典列表
from operator import itemgetter
通過(guò)使用operator模塊的 itemgetter函數(shù)實(shí)現(xiàn)
總結(jié)
以上是生活随笔為你收集整理的dict python用法_Python_Dict用法梳理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 工厂方法模式_工厂方法模式
- 下一篇: websocket python爬虫_p