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

2022-10-04 15:36:26 字數 2666 閱讀 5400

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

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

先提供乙個應用場景:

假設我有兩個二維字典:

room1 = ,orderid2:}

room2 = ,orderid2:}

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

sum_room = ,orderid2:}

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

實現二維字典aodlg的鍵值合併,即將同個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層

a.append(i)

a.append(dict2[key]) ##dict2[key]必須保證只有乙個元素

dict1[key] = a

結果如下:

dict1

out[88]:

下一步,統計key中的value個數:

from collections import counter

for key,item in dict1.items():

count[key] = counter(item)

結果如下:

count

ou ), '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 二維字典的鍵值合併等函式

這篇文章主要講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...

python二維字典實現按照內層鍵的值進行排序

hellow 1 python3.7首先新版本需要用到是items dict.items 以列表返回可遍歷的 鍵,值 元組陣列 關鍵 dict1 sorted hellow.items key lambda item float item 1 price reverse false 公升序dict1...