2016-10-22 73 views
0

我有兩個字典如下。如何將兩個python字典合併到這兩個對列表中?例如

>>> x = {'a':1, 'b': 2} 

>>> y = {'b':10, 'c': 11} 

一些操作後,我可以有這樣的兩個列表嗎?先謝謝你。

x=['a','b','c'] 

y=[1,2,0] 

z=[0,10,11] 

這意味着x列表中的'c'不會出現在y列表中,因此y列表的相應位置中存在零。

+1

您到目前爲止嘗試過什麼?你可以顯示你的代碼並解釋你的實現中目前沒有工作嗎? – idjaw

回答

4

通過將其密鑰轉換爲集合並使用|集合union operator創建一組字典的統一密鑰。

然後使用字典的.get方法(see here)以僅選擇被包含在其中的鍵(或0如果不包含):

>>> x = {'a':1, 'b': 2} 
>>> y = {'b':10, 'c': 11} 
>>> s = sorted(set(x) | set(y)) 
>>> a = [x.get(k, 0) for k in s] 
>>> b = [y.get(k, 0) for k in s] 
>>> s 
['a', 'b', 'c'] 
>>> a 
[1, 2, 0] 
>>> b 
[0, 10, 11] 

或者,如簡單的代碼:


您也可以使用.keys()方法來獲得統一的密鑰列表(x.keys() == set(x))@wim注意到:

s = sorted(x.keys() | y.keys()) 
+0

我只關心這裏的唯一部分是OP是否期望它是關於a,b,c的排序。但最終這也是我也會走的方法。 – idjaw

+2

@idjaw用'sorted'更新。 – Uriel

+2

你可以使用'x.viewkeys()| y.viewkeys()'(或只是'.keys()'在python3) – wim