社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python中如何快速合并两个列表里面的字典

马哥Linux运维 • 4 年前 • 394 次点击  

前几天Python网络班有个学员有这么一个需求:

l1 = [{x: x} for x in range(10)]
l2 = [{x: x} for x in range(10, 20)]

想要实现如下的结果:

[{0: 0, 10: 10}, {1: 1, 11: 11}, {2: 2, 12: 12}, {3: 3, 13: 13}, {4: 4, 14: 14}, {5: 5, 15: 15}, {6: 6, 16: 16}, {7: 7, 17: 17}, {8: 8, 18: 18}, {9: 9, 19: 19}]
也是说l1和l2 中的字典依次合并成一个的新的字典,要实现这个的方法很多,
这里用 {**x, y} 的方式来实现下,我们先来看下{x, **y}的用法:

假设有两个dict d1和d2,合并成一个新的dict,不改变 d1和d2的值,例如

d1 = {"a":1, "b":2}d2 = {"c":3, "d":4}
希望得到一个新的结果d3,如果key相同,则用d2的value 覆盖d1的value:
d3= {'a'1'b'3'c'4}
python3.5+中已经实现一个语法糖,我们来一起看下:
d3 = {**d1, **d2}

好了,我们既然知道了有这么一个语法,现在我们实现下合并列表l1 和列表l2的里面的字典,以下代码仅为抛砖引玉,代码如下:

l1 = [{x: x} for x in range(10)]
l2 = [{x: x} for x in range(10, 20)]
l3 = []
for x, y in zip(l1,l2):
l3.extend([{**x, **y}])
print(l3)
这里使用{**x, **y} 合并字典的语法糖,并且借用了列表的extend 来实现我们的需求

☆ END ☆

以上分享来自马哥Python网络班企业教练日常跟学员的交流。


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/55383
 
394 次点击