亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python怎么合并字典組成的列表

發布時間:2021-11-26 09:48:22 來源:億速云 閱讀:153 作者:iii 欄目:大數據

這篇文章主要講解了“Python怎么合并字典組成的列表”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Python怎么合并字典組成的列表”吧!

最近做了個數據合并的需求這里記錄下:

要求如下:

dict_of_list1 = [{"name": "zhangsan", "age": 18}, {"name": "lisi", "age": 19}, {"name": "wangwu", "age": 20}]dict_of_list2 = [{"name": "zhangsan", "province": "shandong"}, {"name": "lisi",                                                                "province": "changsha"},                 {"name": "xiaohong", "province": "guangxi"}, {"name": "wangwu",                                                               "province": "xizang"}]

將上面的兩個列表的字典進行合并將名字一樣的項目放在一起。

形如:

[{"name":"zhangsan","age":18,"province":"shandong"},{"name":"xiaohong","province":"guangxi"}]

傳統解法

dict_of_list1 = [{"name": "zhangsan", "age": 18}, {"name": "lisi", "age": 19}, {"name": "wangwu", "age": 20}]dict_of_list2 = [{"name": "zhangsan", "province": "shandong"}, {"name": "lisi",                                                                "province": "changsha"},                 {"name": "xiaohong", "province": "guangxi"}, {"name": "wangwu",                                                               "province": "xizang"}]all_data = dict_of_list1 + dict_of_list2d = {}for item in all_data:    name = item["name"]     if name in d:         d[name].update(item)    else:        d[name] = itemresult = []for k,v in d.items():    result.append(v)sorted(v)print(result)

根據要求得知,我們需要根據姓名一樣的進行合并,那么可以創建一個新的字典可以把姓名當作字典的鍵,然后判斷這個鍵是否在這個字典中,如果不存在就是賦值,否則去更新其值。因為它的值是字典類型所以可以通過update進行更新,這種方法可以適用到其他語言。

下面再來一個python獨有的解法。 

通過分組函數

利用python標準庫

from operator import itemgetterfrom itertools import groupbyfrom collections import ChainMap
dict_of_list1 = [{"name": "zhangsan", "age": 18}, {"name": "lisi", "age": 19}, {"name": "wangwu", "age": 20}]dict_of_list2 = [{"name": "zhangsan", "province": "shandong"}, {"name": "lisi",                                                                "province": "changsha"},                 {"name": "xiaohong", "province": "guangxi"}, {"name": "wangwu",                                                               "province": "xizang"}]key = itemgetter("name")all_data = dict_of_list1 + dict_of_list2all_data.sort(key=key)result_list = []for x, y in groupby(all_data, key=key):    d = dict(ChainMap(*y))    result_list.append(d)sorted(result_list, key=key)print(result_list)

我們可以使用itertools模塊的groupby按照name進行分組

groupby有兩個參數第一個是一個可迭代對象,第二個是指定按照什么去分組,類似我們排序時指定key的值,

這里key的值可以使用lambda表達式,或者使用標準庫operator的itemgetter方法,實現相同的效果。

使用這個方法有一個要求那就是,需要提前對可迭代對象進行排序。

經過groupby修飾之后我們得到一個key和itertools._grouper對象,key就是我們指定那個鍵的值,這里就是name的值,然后可以對itertools._grouper對象進行拆分,得到幾個字典,再通過collections的ChainMap對

其元素進行字典合并,之后轉為dict對象。最終加入到指定列表完成我們的任務。

該方法主要是熟悉Python一些比較實用的標準庫的用法。

感謝各位的閱讀,以上就是“Python怎么合并字典組成的列表”的內容了,經過本文的學習后,相信大家對Python怎么合并字典組成的列表這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

图木舒克市| 南昌县| 宣威市| 芒康县| 茶陵县| 宁都县| 孟村| 康定县| 普定县| 色达县| 松江区| 鹿泉市| 株洲县| 伊吾县| 利辛县| 都江堰市| 泰宁县| 西盟| 土默特左旗| 黄陵县| 通辽市| 遂宁市| 屏东县| 行唐县| 东乡族自治县| 当阳市| 阳春市| 玉龙| 大连市| 霍林郭勒市| 鸡西市| 客服| 英吉沙县| 漾濞| 紫金县| 普兰店市| 海淀区| 靖西县| 扬中市| 黔西县| 安庆市|