0
点赞
收藏
分享

微信扫一扫

列表中的元素都是字典,目的是把所有元素合成为一个字典,怎么破?


翠华摇摇行复止,西出都门百余里。

大家好,我是皮皮。

一、前言

前几天在Python最强王者交流群【群除我佬】问了一个Python基础的问题,这里拿出来给大家分享下。


列表中的元素都是字典,目的是把所有元素合成为一个字典,怎么破?_python

二、实现过程

这里一共整理了5个方法,一起来看看吧!

方法一:for循环

使用for循环的确可行,但是感觉应该有其他更好的方法。详情见第一部分的截图。

方法二:解包

这里【吴超建】给了一个代码,如下图所示:


列表中的元素都是字典,目的是把所有元素合成为一个字典,怎么破?_解包_02

通过不断的解包,也是可以的,还好这里只有3个元素,如果有上百个元素的话,这么写,容易崩溃。


列表中的元素都是字典,目的是把所有元素合成为一个字典,怎么破?_开发语言_03

方法三:functools

后来【DIY】提供了一个方法,如下图所示:


列表中的元素都是字典,目的是把所有元素合成为一个字典,怎么破?_for循环_04

代码如下:

import functools

a = [{'a': 1}, {'b': 2}, {'c': 3}]

b = functools.reduce(lambda x, y: dict(**x, **y), a)
print(b)


列表中的元素都是字典,目的是把所有元素合成为一个字典,怎么破?_Python_05

方法四:map

后来【隔壁😼山楂】也给了一个代码,使用map,轻易搞定,代码如下所示:


列表中的元素都是字典,目的是把所有元素合成为一个字典,怎么破?_for循环_06

方法五:chainMap

最后这个方法是【~上善居士~ *郭百川】提供的,要想合并多个字典),可以考虑用chainMap,建立多个字典合并的一个映射,一般用于数据查找,缺点就是键值查找只会从第一个字典开始找,第一个没有才找第二个。你这个列表中每个字典都只有一个键值对而且无重复,直接下面酱紫也可以。


列表中的元素都是字典,目的是把所有元素合成为一个字典,怎么破?_for循环_07

代码如下:


列表中的元素都是字典,目的是把所有元素合成为一个字典,怎么破?_解包_08

一般要迭代生成新序列,首先应该想到的是各种推导式,然后才是map,推导式比map速度快一点点,这在大佬的书里有例子实证。

三、总结

大家好,我是皮皮。这篇文章主要盘点了一个Python处理字典的问题,文中针对该问题,给出了具体的解析和代码实现,一共5个方法,帮助粉丝顺利解决了问题。

最后感谢粉丝【群除我佬】提问,感谢【DIY】、【吴超建】、【隔壁😼山楂】、【上善居士~郭百川】给出的思路和代码解析,感谢【eric】等人参与学习交流。


举报

相关推荐

0 条评论