内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

python怎么實(shí)現(xiàn)二維字典的鍵值合并等函數(shù)-創(chuàng)新互聯(lián)

這篇文章主要介紹python 怎么實(shí)現(xiàn)二維字典的鍵值合并等函數(shù),文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

目前創(chuàng)新互聯(lián)已為近1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、網(wǎng)站改版維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、平樂網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

python的五大特點(diǎn)是什么

python的五大特點(diǎn):1.簡單易學(xué),開發(fā)程序時(shí),專注的是解決問題,而不是搞明白語言本身。2.面向?qū)ο螅c其他主要的語言如C++和Java相比, Python以一種非常強(qiáng)大又簡單的方式實(shí)現(xiàn)面向?qū)ο缶幊獭?.可移植性,Python程序無需修改就可以在各種平臺(tái)上運(yùn)行。4.解釋性,Python語言寫的程序不需要編譯成二進(jìn)制代碼,可以直接從源代碼運(yùn)行程序。5.開源,Python是 FLOSS(自由/開放源碼軟件)之一。

(1) 二維字典的鍵值合并:

先提供一個(gè)應(yīng)用場景:

假設(shè)我有兩個(gè)二維字典:

room1 = {orderid1:{roomid1:pred1,roomid2:pred2},orderid2:{roomid3:pred3,roomid4:pred4}}
room2 = {orderid1:{roomid1:pred5,roomid2:pred6},orderid2:{roomid3:pred7,roomid4:pred8}}

這兩個(gè)字典的key相同,只有第二維的value不同,我的目的是把這兩個(gè)字典的value相加,得到的結(jié)果如下:

sum_room = {orderid1:{roomid1:pred1+pred5,roomid2:pred2+pred6},orderid2:{roomid3:pred3+pred7,roomid4:pred4+pred8}}

具體的實(shí)現(xiàn)代碼如下:(為了提高通用性,以下代碼創(chuàng)建了兩個(gè)簡單的字典obj3,obj4)

實(shí)現(xiàn)二維字典的鍵值合并,即將同個(gè)key下的value相加:

思路:先創(chuàng)建一個(gè)空字典all_room,將all_room與obj的value相加并賦給all_room:

from collections import defaultdict
all_room = defaultdict(defaultdict)
obj3 = {'a':{'aa':1,'aa1':2},'b':{'bb':2},'c':3}
obj4 = {'a': {'aa': 5, 'aa1': 6}, 'b': {'bb': 7}, 'c': 8}
def sum_value(obj):
 for key in obj:
  if type(obj[key]).__name__ == 'dict':
   if key not in all_room:
    all_room[key] = {}
   for subkey in obj[key]:
    if subkey not in all_room[key]:
     all_room[key][subkey] = 0
    all_room[key][subkey] += obj[key][subkey] 
  else:
   if key not in all_room:
    all_room[key] = 0
   all_room[key] += obj[key]
 return all_room

看一下結(jié)果:

sum_value(obj3)
Out[40]: 
defaultdict(collections.defaultdict,
   {'a': {'aa': 1, 'aa1': 2}, 'b': {'bb': 2}, 'c': 3})
 
sum_value(obj4)
Out[41]: 
defaultdict(collections.defaultdict,
   {'a': {'aa': 6, 'aa1': 8}, 'b': {'bb': 9}, 'c': 11})

實(shí)現(xiàn)了文章開頭所述功能。

sum_value(obj)這個(gè)函數(shù)可以實(shí)現(xiàn)對(duì)多個(gè)二維字典的鍵值相加,只要?jiǎng)?chuàng)建一個(gè)for循環(huán)就行了。

(2)往字典的key里添加一個(gè)新的value:

同樣提供一個(gè)應(yīng)用場景:

dict1 = {'order1': ['room1', 'room1'],'order2': ['room3', 'room3']}
 
dict2 = {'order1': 'room2', 'order2': 'room3'}

我的目的是想把dict2中key里的value添加進(jìn)dict1中相同的key里,理想結(jié)果如下:

dict1 = {'order1': ['room1', 'room1', 'room2'], 'order2': ['room3', 'room3', 'room3']}

下面給出實(shí)現(xiàn)代碼:

for key in dict1.keys():
 a=[]
 b=[]
 b = dict1[key] 
 for i in b: ##這一步很關(guān)鍵,目的是把dict1[key]的value值逐個(gè)取出存進(jìn)a,再把dict2[key]的value值存進(jìn)a里面,這樣可以避免dict1[key]出現(xiàn)多個(gè)list層
  a.append(i)
 a.append(dict2[key]) ##dict2[key]必須保證只有一個(gè)元素
 dict1[key] = a

結(jié)果如下:

dict1
Out[88]: {'order1': ['room1', 'room1', 'room2'], 'order2': ['room3', 'room3', 'room3']}

下一步,統(tǒng)計(jì)key中的value個(gè)數(shù):

from collections import Counter
for key,item in dict1.items():
 count[key] = Counter(item)

結(jié)果如下:

count

Out[91]: {'order1': Counter({'room1': 2, 'room2': 1}), 'order2': Counter({'room3': 3})}

接著,取出每個(gè)外層key中里層value大的key(比較拗口,即取出每個(gè)orderid中roomid的值大的roomid):

(舉個(gè)例子,在order1中,room1的值為2,是大值,所以我把room1賦給order1,即result1 = {'order1':'room1'})

result = {}
for key,item in count.items():
 result[key] = max(item,key=item.get)

結(jié)果如下:

result
Out[94]: {'order1': 'room1', 'order2': 'room3'}

(3)字典的排序:sorted()函數(shù)

import operator
dic = {(1, 2): 3, (1, 3): 4, (4, 5): 14} ##字典的key可以是元組;
ds = sorted(dic.items(),key=operator.itemgetter(1),reverse=True) ##如果要升序排列,把reverse=True去掉即可;
ds
Out[21]: [((4, 5), 14), ((1, 3), 4), ((1, 2), 3)]

(4)字典中不允許出現(xiàn)一個(gè)鍵對(duì)應(yīng)多個(gè)值的情況,當(dāng)出現(xiàn)這種情況時(shí),取最后的鍵值對(duì):

如:

>>> dict1 = {'foo':789, 'foo': 'xyz'} 

>>> dict1 結(jié)果:{'foo': 'xyz'}

以上這

以上是“python 怎么實(shí)現(xiàn)二維字典的鍵值合并等函數(shù)”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

分享文章:python怎么實(shí)現(xiàn)二維字典的鍵值合并等函數(shù)-創(chuàng)新互聯(lián)
網(wǎng)頁地址:http://m.rwnh.cn/article12/dddsgc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站全網(wǎng)營銷推廣、網(wǎng)頁設(shè)計(jì)公司、定制開發(fā)建站公司、營銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管
石门县| 湘乡市| 临朐县| 彩票| 韩城市| 永定县| 元阳县| 那曲县| 嘉兴市| 时尚| 宣汉县| 当阳市| 合川市| 兰西县| 乐都县| 清镇市| 康马县| 平果县| 吴江市| 许昌县| 菏泽市| 凤翔县| 南和县| 韩城市| 买车| 惠州市| 河池市| 桐梓县| 理塘县| 澄江县| 麻栗坡县| 吴堡县| 罗定市| 区。| 蒲城县| 弥勒县| 苏尼特左旗| 祁阳县| 灵寿县| 高要市| 泸水县|