本篇内容主要讲解“Python怎么合并两个list或dict”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python怎么合并两个list或dict”吧!
合并 list
如果有两个 list,分别为:
x = [1, 2, 3]
y = [4, 5, 6]
想得到合并的结果:z = [1, 2, 3, 4, 5, 6]
该怎么做?
这个比较简单,我们直接用 z=x+y 来合并列表:
In [1]: x=[1,2,3]
In [2]: y=[4,5,6]
In [3]: z=x+y
In [4]: z
Out[4]: [1, 2, 3, 4, 5, 6]
合并 dict
和上题类似,我们如果想合并两个字典 x,y,合并为 z。要怎么做呢?大家应该记得 dict 有个方法 update 可以更新字典,但是是更新了字典,而不是生成一个合并后的结果。如果直接两个相加,字典是会报错的。
In [5]: x = {'a': 1, 'b': 2}
In [6]: y = {'b': 10, 'c': 11}
In [7]: z = x.update(y)
In [8]: print(z)
None
In [9]: z=x+y
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-9-4293a5baa16b> in <module>
----> 1 z=x+y
TypeError: unsupported operand type(s) for +: 'dict' and 'dict'
显然,这样是没有达到要求的。那么怎么做呢?
非常巧妙的是,Python3.5 之后对*的 unpacking(拆包,解包或解构)操作来完成。
我们直接在字典的前面加上两个*,然后用一对{}新建字典即可。
In [10]: z = {**x, **y}
In [11]: z
Out[11]: {'a': 1, 'b': 10, 'c': 11}
扩展
回到最开始的列表相加,其实就有了另一种方式,也使用*完成。
In [12]: x=[1,2,3]
In [13]: y=[4,5,6]
In [14]: z=[*x,*y]
In [15]: z
Out[15]: [1, 2, 3, 4, 5, 6]
而且,这种方式不仅限于合并 list,还可以混合 tuple 一起合并。
In [16]: a=[7,8,9]
In [17]: b=(11,22,33)
In [18]: z=[*x,*y,*a,*b]
In [19]: z
Out[19]: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33]
如果,你的列表有重复内容需要去除,只需要再配合 set 使用即可。
注意*的个数和外层的括号类型。
该PEP建议扩展使用* iterable拆包运算符和** dictionary拆包运算符,以允许在更多位置、任意次数和其他情况下拆包。特别是在函数调用、理解和生成器表达式以及显示中。
到此,相信大家对“Python怎么合并两个list或dict”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
原创文章,作者:carmelaweatherly,如若转载,请注明出处:https://blog.ytso.com/tech/opensource/219842.html