本篇內容主要講解“Python怎么合并兩個list或dict”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Python怎么合并兩個list或dict”吧!
如果有兩個 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]
和上題類似,我們如果想合并兩個字典 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”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。