這篇文章主要講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:
同樣提供乙個應用場景:
我的目的是想把dict2中key裡的value新增進dict1中相同的key裡,理想結果如下:dict1 =
dict2 =
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)
接著,取出每個外層key中里層value最大的key(比較拗口,即取出每個orderid中roomid的值最大的roomid):count
out[91]: ), 'order2': counter()}
(舉個例子,在order1中,room1的值為2,是最大值,所以我把room1賦給order1,即result1 = )
結果如下:result = {}
for key,item in count.items():
result[key] = max(item,key=item.get)
(3)字典的排序:sorted()函式result
out[94]:
(4)字典中不允許出現乙個鍵對應多個值的情況,當出現這種情況時,取最後的鍵值對: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)]
如:>>> 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 可以用來一次對多個陣列進行排序,或者根據某一維或多維對多維陣列進行排序。關聯鍵名保持不變,但數字鍵名會被重新索引。輸入陣列被當成乙個表的列並以行來排序,第乙個陣列是要排序的主要陣列。陣列中的行 值 比較為相同的話就按照下乙個輸入陣列中相應值的大小來排...