重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
本篇內(nèi)容主要講解“Python怎么合并兩個list或dict”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Python怎么合并兩個list或dict”吧!
創(chuàng)新互聯(lián)專注于寧都企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),商城開發(fā)。寧都網(wǎng)站建設(shè)公司,為寧都等地區(qū)提供建站服務(wù)。全流程按需定制設(shè)計(jì),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
如果有兩個 list,分別為:
x = [1, 2, 3]
y = [4, 5, 6]
想得到合并的結(jié)果: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]
和上題類似,我們?nèi)绻牒喜蓚€字典 x,y,合并為 z。要怎么做呢?大家應(yīng)該記得 dict 有個方法 update 可以更新字典,但是是更新了字典,而不是生成一個合并后的結(jié)果。如果直接兩個相加,字典是會報(bào)錯的。
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)
in
----> 1 z=x+y
TypeError: unsupported operand type(s) for +: 'dict' and 'dict'
顯然,這樣是沒有達(dá)到要求的。那么怎么做呢?
非常巧妙的是,Python3.5 之后對*的 unpacking(拆包,解包或解構(gòu))操作來完成。
我們直接在字典的前面加上兩個*,然后用一對{}新建字典即可。
In [10]: z = {**x, **y}
In [11]: z
Out[11]: {'a': 1, 'b': 10, 'c': 11}
回到最開始的列表相加,其實(shí)就有了另一種方式,也使用*完成。
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]
如果,你的列表有重復(fù)內(nèi)容需要去除,只需要再配合 set 使用即可。
注意*的個數(shù)和外層的括號類型。
該P(yáng)EP建議擴(kuò)展使用* iterable拆包運(yùn)算符和** dictionary拆包運(yùn)算符,以允許在更多位置、任意次數(shù)和其他情況下拆包。特別是在函數(shù)調(diào)用、理解和生成器表達(dá)式以及顯示中。
到此,相信大家對“Python怎么合并兩個list或dict”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!