亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python 實現二維字典的鍵值合并等函數

 更新時間:2019年12月06日 09:32:21   作者:Flying_sfeng  
今天小編就為大家分享一篇python 實現二維字典的鍵值合并等函數,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

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

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

先提供一個應用場景:

假設我有兩個二維字典:

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

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

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

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

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

思路:先創(chuàng)建一個空字典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

看一下結果:

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})

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

sum_value(obj)這個函數可以實現對多個二維字典的鍵值相加,只要創(chuàng)建一個for循環(huán)就行了。

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

同樣提供一個應用場景:

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

我的目的是想把dict2中key里的value添加進dict1中相同的key里,理想結果如下:

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

下面給出實現代碼:

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]: {'order1': ['room1', 'room1', 'room2'], 'order2': ['room3', 'room3', 'room3']}

下一步,統(tǒng)計key中的value個數:

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

結果如下:

count

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

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

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

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

結果如下:

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

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

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)字典中不允許出現一個鍵對應多個值的情況,當出現這種情況時,取最后的鍵值對:

如:

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

>>> dict1 結果:{'foo': 'xyz'}

以上這篇python 實現二維字典的鍵值合并等函數就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Python繪制箭頭向量圖的示例代碼

    Python繪制箭頭向量圖的示例代碼

    箭頭向量圖十分常見,比如天氣預報在顯示風場的時候,就會貼心地用箭頭指明風的方向,下面就跟隨小編一起學習一下如何利用Python繪制箭頭向量圖吧
    2023-08-08
  • python制作填詞游戲步驟詳解

    python制作填詞游戲步驟詳解

    在本文里我們給大家整理了關于python制作填詞游戲的具體步驟以及實例代碼,需要的朋友們跟著學習下。
    2019-05-05
  • pandas中遍歷dataframe的每一個元素的實現

    pandas中遍歷dataframe的每一個元素的實現

    這篇文章主要介紹了pandas中遍歷dataframe的每一個元素的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • Python實現購物系統(tǒng)(示例講解)

    Python實現購物系統(tǒng)(示例講解)

    下面小編就為大家?guī)硪黄狿ython實現購物系統(tǒng)(示例講解)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • 如何使用五行Python代碼輕松實現批量摳圖

    如何使用五行Python代碼輕松實現批量摳圖

    簡單來說,摳圖就是將照片的主體人或物品從圖片中摳出來,以便貼到別處使用,下面這篇文章主要給大家介紹了關于如何使用五行Python代碼輕松實現批量摳圖的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-04-04
  • 在VScode中引用自定義模塊問題

    在VScode中引用自定義模塊問題

    這篇文章主要介紹了在VScode中引用自定義模塊問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-07-07
  • Python數據可視化Pyecharts庫的使用教程

    Python數據可視化Pyecharts庫的使用教程

    pyecharts是一個用于生成echarts圖表的類庫。echarts是百度開源的一個數據可視化庫,用echarts生成的圖可視化效果非常棒。使用pyechart庫可以在python中生成echarts數據圖。本文將詳細介紹一下Pyecharts庫的使用,需要的可以參考一下
    2022-02-02
  • 2020年10款優(yōu)秀的Python第三方庫,看看有你中意的嗎?

    2020年10款優(yōu)秀的Python第三方庫,看看有你中意的嗎?

    2020已經過去,在過去的一年里,又有非常多優(yōu)秀的Python庫涌現出來。相對于numpy、TensorFlow、pandas這些已經經過多年維護、迭代,對于大多數Python開發(fā)者耳熟能詳的庫不同。
    2021-01-01
  • Python圖像處理之圖像的灰度線性變換

    Python圖像處理之圖像的灰度線性變換

    這篇文章主要介紹了Python圖像處理之圖像的灰度線性變換,文章圍繞主題展開詳細的內容戒殺,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • python操作mongodb根據_id查詢數據的實現方法

    python操作mongodb根據_id查詢數據的實現方法

    這篇文章主要介紹了python操作mongodb根據_id查詢數據的實現方法,實例分析了Python根據pymongo不同版本操作ObjectId的技巧,需要的朋友可以參考下
    2015-05-05

最新評論