python 二維字典的鍵值合併等函式

2021-08-01 21:34:18 字數 2746 閱讀 8212

這篇文章主要講python中關於字典的一些具體操作,講解的問題都是本人在實際程式設計中所遇到的問題,讀者可以根據自己所遇到的問題具體問題具體分析。

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

先提供乙個應用場景:

假設我有兩個二維字典: room1 = ,orderid2:}

room2 = ,orderid2:}

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

sum_room = ,orderid2:}

具體的實現**如下:(為了提高通用性,以下**建立了兩個簡單的字典obj3,obj4)

實現二維字典的鍵值合併,即將同個key下的value相加:

思路:先建立乙個空字典all_room,將all_room與obj的value相加並賦給all_room:

from collections import defaultdict

all_room = defaultdict(defaultdict)

obj3 = ,'b':,'c':3}

obj4 = , 'b': , '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

看一下結果:

sum_value(obj3)

out[40]:

defaultdict(collections.defaultdict,

, 'b': , 'c': 3})

sum_value(obj4)

out[41]:

defaultdict(collections.defaultdict,

, 'b': , 'c': 11})

實現了文章開頭所述功能。

sum_value(obj)這個函式可以實現對多個二維字典的鍵值相加,只要建立乙個for迴圈就行了。

(2)往字典的key裡新增乙個新的value:

同樣提供乙個應用場景:

dict1 = 

dict2 =

我的目的是想把dict2中key裡的value新增進dict1中相同的key裡,理想結果如下:

dict1 =
下面給出實現**:

for key in dict1.keys():

a=b=

b = dict1[key]

for i in b: ##這一步很關鍵,目的是把dict1[key]的value值逐個取出存進a,再把dict2[key]的value值存進a裡面,這樣可以避免dict1[key]出現多個list層

dict1[key] = a

結果如下:

dict1

out[88]:

from collections import counter

for key,item in dict1.items():

count[key] = counter(item)

結果如下:

count

out[91]: ), 'order2': counter()}

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

(舉個例子,在order1中,room1的值為2,是最大值,所以我把room1賦給order1,即result1 = )

result = {}

for key,item in count.items():

result[key] = max(item,key=item.get)

結果如下:

result

out[94]:

(3)字典的排序:sorted()函式

import operator

dic = ##字典的key可以是元組;

ds = sorted(dic.items(),key=operator.itemgetter(1),reverse=true) ##如果要公升序排列,把reverse=true去掉即可;

dsout[21]: [((4, 5), 14), ((1, 3), 4), ((1, 2), 3)]

(4)字典中不允許出現乙個鍵對應多個值的情況,當出現這種情況時,取最後的鍵值對:

如:>>> dict1 =  

>>> dict1  結果:

持續更新中......

python 實現二維字典的鍵值合併等函式

這篇文章主要講python中關於字典的一些具體操作,講解的問題都是本人在實際程式設計中所遇到的問題,讀者可以根據自己所遇到的問題具體問題具體分析。1 二維字典的鍵值合併 先提供乙個應用場景 假設我有兩個二維字典 room1 orderid2 room2 orderid2 這兩個字典的key相同,只有...

根據二維陣列的某鍵值合併二維陣列

需求 根據date欄位的值將每天的type的pv uv的資料放到乙個維度裡,目標陣列仍為二維陣列 原始陣列 resource array array 0 array type hot list date 2016 07 18 pv 2,uv 2,1 array type trailer list d...

PHP二維陣列按鍵值排序

出處 php 中 array multisort 可以用來一次對多個陣列進行排序,或者根據某一維或多維對多維陣列進行排序。關聯鍵名保持不變,但數字鍵名會被重新索引。輸入陣列被當成乙個表的列並以行來排序,第乙個陣列是要排序的主要陣列。陣列中的行 值 比較為相同的話就按照下乙個輸入陣列中相應值的大小來排...