слияние диктов в питоне - PullRequest
       5

слияние диктов в питоне

0 голосов
/ 14 сентября 2011

Я новичок в python .. У меня есть два отсортированных массива (по ключу), которые я хотел бы объединить. Оба массива имеют некоторые общие ключи, а некоторые существуют уникально в одном из массивов. Я хочу сделать внешнее соединение.

Array1 = {'key_1': 10, 'key_2': 14,..'key_m': 321}
Array2 = {'key_1': 15, 'key_2': 12..'key_m':2,..'key_n':34}

Я хочу объединить, используя key_1..key_n ..

Array3 = [[key_1',10,15],['key_2':14:12],..]

У меня не установлен пакет numpy на моем компьютере. Нужно ли мне это объединить этот массив? Какой лучший способ кодировать это? Спасибо !!!

Ответы [ 2 ]

2 голосов
/ 14 сентября 2011

Как насчет этого?

#!/usr/bin/env python
from itertools import chain

dict1 = {'key_1': 10, 'key_2': 14, 'key_m': 321}
dict2 = {'key_1': 15, 'key_2': 12, 'key_m':2, 'key_n':34}

dict3 = {}

# Go through all keys in both dictionaries
for key in set(chain(dict1, dict2)):

    # Find the key in either dictionary, using an empty
    # string as the default if it is not found.
    dict3[key] = [dict.get(key, "")
                  for dict in (dict1, dict2)]

print(dict3)

Теперь dict3 имеет список всех значений из входных массивов.

Или, если вы хотите, в этом [[key, value, value], [key, value, value]...] формате:

#!/usr/bin/env python
from itertools import chain

dict1 = {'key_1': 10, 'key_2': 14, 'key_m': 321}
dict2 = {'key_1': 15, 'key_2': 12, 'key_m':2, 'key_n':34}

result = [[key] + [dict.get(key, "")
           for dict in (dict1, dict2)]
          for key in set(chain(dict1, dict2))]
result.sort()

print(result)
1 голос
/ 14 сентября 2011

Ваш Array3 имеет неверный синтаксис. Вы можете попробовать что-то вроде этого:

>>> Array1 = {'key_1': 10, 'key_2': 14, 'key_m': 321}
>>> Array2 = {'key_1': 15, 'key_2': 12, 'key_m':2, 'key_n':34}
>>>
>>> Array3_dict = dict()
>>> for Array in (Array1, Array2):
...     for key, value in Array.items():
...         if not key in Array3_dict: Array3_dict[key] = list()
...         Array3_dict[key].append(value)
...
>>> Array3 = [ [ key ] + value for key, value in Array3_dict.items() ]
>>> Array3.sort()
>>> print Array3
[['key_1', 10, 15], ['key_2', 14, 12], ['key_m', 321, 2], ['key_n', 34]]
>>>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...