2016-10-22 3 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] 

Это означает, что «с» в списке й не встречается в списке у, поэтому есть нуль в соответствующем месте списка у.

+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

Смежные вопросы