2016-10-22 68 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