2013-07-18 3 views
2

У меня есть два collection.Counter() с, оба из которых из одних и тех же ключей, так что они выглядят примерно так:Объединение двух словарей с теми же ключами и различные значения

01: 3 
02: 2 
03: 4 

01: 8 
02: 10 
03: 13 

Я хочу, чтобы конечный результат чтобы немного походить на это:

01: [3, 8] 
02: [2, 10] 
03: [4, 13] 

Как бы мне слить их?

+0

http://stackoverflow.com/a/5946322/594589 – dm03514

ответ

4

Вы можете использовать dict comprehension:

dict1 = {1: 3, 2: 2, 3: 4 } 
dict2 = {1: 8, 2: 10, 3: 13 } 
dict3 = { k: [ dict1[k], dict2[k] ] for k in dict1 } 
# Result: 
# dict3 = {1: [3, 8], 2: [2, 10], 3: [4, 13]} 
0

Нет никаких автоматических способов сделать это, вам придется вручную прокручивать массивы и объединять их с конечным выходным массивом самостоятельно.

0

У вас могут возникнуть проблемы, если в одном словаре нет одного ключа. Это вызовет ошибку KeyField, иначе это сработает.

d1 = {01 : 3, 02: 2, 03: 4} 
d2 = {01: 8, 02: 10, 03: 13} 
d3 = {} 
for key in d1.keys(): 
    d3[key] = [d1[key], d2[key]] 

и d3 будет содержать

{ 1 : [3, 8], 2: [2, 10], 3: [4, 13] } 
Смежные вопросы