Python怎么合并两个list或dict

本篇内容主要讲解“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

(0)
上一篇 2022年1月2日 13:45
下一篇 2022年1月2日 13:46

相关推荐

发表回复

登录后才能评论