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