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 来实现我们的需求

原文地址:https://blog.51cto.com/14730644/2473391

时间: 2024-08-10 12:01:45

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

python函数-zip->zip函数合并两个列表

目标:打印两个列表的值 使用while True: i=['d','e','f','g'] t=['a','b','c'] n=0 while n < max(len(i),len(t)):     try:         print(i[n])         print(t[n])     except IndexError:         break     n+=1 使用for循环结合zip函数: for k,v in zip(i,t):     print(k)     print

python中判断语句用两个or连接的奇葩

学python的时候犯的一个错误,放在这吧.就是在循环某个列表的时候不要去操作它,这是容易忽略的一个地方.所以如果要操作某个列表本身,那么先把该列表copy一份,然后再读取的时候读copy的那份.操作原来的列表. 正确的如下: import re a="hen/zg /zg qd/a /a ,/x /x hen/zg /zg xh/v /v " b=re.split('[ ]', a) b_copy=b[:] print b cixing=["/x","/

python中执行shell的两种方法总结

这篇文章主要介绍了python中执行shell的两种方法,有两种方法可以在Python中执行SHELL程序,方法一是使用Python的commands包,方法二则是使用subprocess包,这两个包均是Python现有的内置模块.需要的朋友可以参考借鉴,下面来一起看看吧. 一.使用python内置commands模块执行shell commands对Python的os.popen()进行了封装,使用SHELL命令字符串作为其参数,返回命令的结果数据以及命令执行的状态: 该命令目前已经废弃,被s

【转载】Python中如何高效实现两个字典合并,三种方法比较。

本文转载自:http://www.pythoner.com/13.html Python中将两个字典进行合并操作,是一个比较常见的问题.本文将介绍几种实现两个字典合并的方案,并对其进行比较. 对于这个问题,比较直观的想法是将两个字典做相加操作,赋值给结果字典,其代码为: 方法一: dictMerged1 = dict( dict1.items() + dict2.items() ) 然而,该方法合并时所用时间较长,效率更高的代码为: 方法二: dictMerged2 = dict( dict1,

python中包含UTF-8编码中文的列表或字典的输出

在python 下面一个包含中文字符串的列表(list)或字典,直接使用print会出现以下的结果: >>> dict = {"asdf": "我们的python学习"} >>> print dict {'asdf': '\xe6\x88\x91\xe4\xbb\xac\xe7\x9a\x84python\xe5\xad\xa6\xe4\xb9\xa0'} 在输出处理好的数据结构的时候很不方便,需要使用以下方法进行输出: >

Python中os与sys两模块的区别

转载文章 os与sys模块的官方解释如下: os: This module provides a portable way of using operating system dependent functionality. 这个模块提供了一种方便的使用操作系统函数的方法. sys: This module provides access to some variables used or maintained by the interpreter and to functions that i

图片哈希概论及python中如何实现对比两张相似的图片

Google 以图搜图的原理,其中的获取图片 hash 值的方法就是 AHash. 每张图片都可以通过某种算法得到一个 hash 值,称为图片指纹,两张指纹相近的图片可以认为是相似图片. 以图搜图的原理就是获取你上传的图片的指纹,和图库的图片指纹对比,查找出最相似的若干张图片展示. 除了以图搜图,图片哈希还可以做什么呢?例如图片检索,重复图片剔除,图片相似度比较等等. 这种哈希算法大概有 4 种: 1,差值哈希:DHash(Difference Hash)2,均值哈希:AHash(Average

Python中使用正则表达式获取两个字符中间部分

问题背景:当我们爬取网页信息时,对于一些标签的提取是没有意义的,所以需要提取标签中间的信息. 解决办法:用到了re包下的函数 方法1:用到了research()方法和group()方法 方法2:用到了findall()方法 具体实现: import re # 匹配两个字符中间的所有字符 a = '<p>life is short, i use python<a/>i love it<p>' r = re.search('<p>(.*)<a/>(.

沫沫金:Java快速合并两个数组【绝技】

需求: 合并两个Object[] a 和Object[] b: 方案 List<Object[]> quotas = new ArrayList<Object[]>(); Object[] objs1 = quotas_1.get(i); Object[] objs2 =quotas_2.get(i); //合并多sheet页数据,切割行级合并 List list = new ArrayList(Arrays.asList(objs1)); list.addAll(Arrays.a