合并dict、list的方法

dict1={1:[1,11,111],2:[2,22,222]}
dict2={3:[3,33,333],4:[4,44,444]}
合并两个字典得到类似

{1:[1,11,111],2:[2,22,222],3:[3,33,333],4:[4,44,444]}
方法1:

dictMerged1=dict(dict1.items()+dict2.items())
方法2:

dictMerged2=dict(dict1, **dict2)
方法2等同于:

dictMerged=dict1.copy()
dictMerged.update(dict2)

或者

dictMerged=dict(dict1)
dictMerged.update(dict2)
方法2比方法1速度快很多,用timeit测试如下

$ python -m timeit -s ‘dict1=dict2=dict((i,i) for i in range(100))‘ ‘dictMerged1=dict(dict1.items()+dict2.items())‘
    10000 loops, best of 3: 20.7 usec per loop
$ python -m timeit -s ‘dict1=dict2=dict((i,i) for i in range(100))‘ ‘dictMerged2=dict(dict1,**dict2)‘
    100000 loops, best of 3: 6.94 usec per loop
$ python -m timeit -s ‘dict1=dict2=dict((i,i) for i in range(100))‘ ‘dictMerged3=dict(dict1)‘ ‘dictMerged3.update(dict2)‘
    100000 loops, best of 3: 7.09 usec per loop
$ python -m timeit -s ‘dict1=dict2=dict((i,i) for i in range(100))‘ ‘dictMerged4=dict1.copy()‘ ‘dictMerged4.update(dict2)‘
    100000 loops, best of 3: 6.73 usec per loop

a = {‘a‘: 1}
b = {‘b‘: 2}
c = [1]
d = [‘a‘,2]
print(dict(a, **b))

print(c+d)

输出:

{‘a‘: 1, ‘b‘: 2}
[1, ‘a‘, 2]

除了直接相加(生成新的list),还有两种方法(修改其中一个list):

    1. 用list的extend方法,L1.extend(L2),该方法将参数L2的全部元素添加到L1的尾部,例如:


      1

      2

      3

      4

      5


      >>> L1 = [12345]

      >>> L2 = [203040]

      >>> L1.extend(L2)

      >>> L1

      [12345203040]

    2. 用切片(slice)操作,L1[len(L1):len(L1)] = L2和上面的方法等价,例如:

      1

      2

      3

      4

      5

      6


      >>> L1 = [12345]

      >>> L2 = [203040]

      >>> L1[len(L1):len(L1)] = L2

      >>> 

      >>> L1

      [12345203040]

但切片方法用起来更灵活,可以插入到头部,或其他任意部位,例如:

加到开头:


1

2

3

4

5


>>> L1 = [12345]

>>> L2 = [203040]

>>> L1[0:0= L2

>>> L1

[20304012345]

    1. 加到中间:

1

2

3

4

5

6

>>> L1 = [12345]

>>> L2 = [203040]

>>> 

>>> L1[1:1= L2

>>> L1

[12030402345]

去重合并两个list:

法一:

>>> a = [1,3,5,7]
>>> b = [1,3,4,6,8]
>>> c = list(set(a+b))
>>> a
[1, 3, 5, 7]
>>> b
[1, 3, 4, 6, 8]
>>> c
[1, 3, 4, 5, 6, 7, 8]

法二:

= [1,3,5,7]

= [1,3,4,6,8]

c=list(set(a).union(set(b)))

法三:

= [1,3,5,7]

= [1,3,4,6,8]

= list(set(a) | set(b))

时间: 2024-10-14 16:32:54

合并dict、list的方法的相关文章

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

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

合并多个文本文件方法

原创作品,出自 "深蓝的blog" 博客,深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/47055589 把多个文本文件合并的小方法 怎样高速合并多个文本(如txt)文件呢? 这个事实上非常easy. (1).WIN下合并多个txt文件 实验: 建立多个txt文本文件.例如以下: 当中内容分别为: 1:a 2:b 3:c 4:d 现要把这四个txt文件合成为一个".sql"文件. 合并后的效果例如

RequireJS对文件合并与压缩实现方法

RequireJS 是一个JavaScript模块加载器.它非常适合在浏览器中使用, 它非常适合在浏览器中使用,但它也可以用在其他脚本环境, 就像 Rhino and Node. 使用RequireJS加载模块化脚本将提高代码的加载速度和质量. 本文为大家讲解的是requireJS对文件合并与压缩的实现方法,感兴趣的同学参考下. RequireJS提供了一个打包与压缩工具r.js,r.js的压缩工具使用UglifyJS进行压缩的或Closure Compiler.r.js下载 requireJS

PHP中数组合并的两种方法及区别介绍

PHP数组合并两种方法及区别 如果是关联数组,如下: 复制代码代码如下: $a = array( 'where' => 'uid=1', 'order' => 'uid', ); $b = array( 'where' => 'uid=2', 'order' => 'uid desc', ); 1. array_merge,如果两个数组存在相同的key,后面的一个会覆盖前面的 复制代码代码如下: <?php $c = array_merge($a, $b); var_expo

Egit的merge合并冲突具体解决方法

稍微总结下弄了半个下午的egit的merge合并冲突解决方法,网上看的都是一个模板出来的,看的糊里糊涂,花了很多时间去实验整个合并流程.. 前提工作 创建一个普通JAVA工程Test,创建一个类Test,写点东西并加入到本地git库: 创建个develop分支,创建个Develop类,修改Test类的某些语句,添加新代码段,提交: 切换到master分支,创建个Master类,修改Test类的同一部分语句,提交: 以上三条操作不进行详细说明,很简单的. 合并过程 打开git repository

比較JS合并数组的各种方法及其优劣

原文链接:  Combining JS Arrays原文日期: 2014-09-09翻译日期: 2014-09-18翻译人员: 铁锚 本文属于JavaScript的基础技能. 我们将学习结合/合并两个JS数组的各种经常用法,并比較各种方法的优缺点. 我们先来看看详细的场景: var q = [ 5, 5, 1, 9, 9, 6, 4, 5, 8]; var b = [ "tie", "mao", "csdn", "ren",

dict,列表方法

dict.clear() 删除字典中所有元素 dict.copy() 返回字典(浅复制)的一个副本 dict.fromkeys(seq,val=None) 创建并返回一个新字典,以 seq 中的元素做该字典的键,val 做该字 典中所有键对应的初始值(如果不提供此值,则默认为 None) dict.get(key, default=None)对字典 dict 中的键 key,返回它对应的值 value,如果字典中不存在此 键,则返回 default 的值(注意,参数 default 的默认值为

Oracle多行记录合并的几种方法

今天正好遇到需要做这个功能,顺手搜了一下网络,把几种方法都列出来,方便以后参考. 1 什么是合并多行字符串(连接字符串)呢,例如: SQL> desc test; Name Type Nullable Default Comments ------- ------------ -------- ------- -------- COUNTRY VARCHAR2(20) Y CITY VARCHAR2(20) Y SQL> select * from test; COUNTRY CITY ---

关于如果把PDF合并为一个的方法

PDF合并对于专业的人士来说是很简单的事情,但是对于新手来说就不一定了,其实我觉得我也只是个半桶水就是.不过在日常生活学习中,我常用的也就是两种办法: ①文档----提取页面功能.②文件----合并PDF功能. 使用专门的PDF合并工具:例如adobe acrobat,iStylePDF等: 只需要安装好软件,打开您想要合并的文件,在点击文档----插入页面,即可选择您要合并的PDF文件,选择好插入位置:亦或者点击文档----提取页面,选择您要分割出来的PDF页面: 第二个方法就是直接打开软件,