Как объединить 2 упорядоченных словаря в python?
У меня есть 2 заказанных словаря, например:
a = collections.OrderedDict()
b = collections.OrderedDict()
И в них есть вещи. Как мне объединить эти 2? Я пытался:
mergeDict = dict(a.items() + b.items())
но это уже не упорядоченный словарь.
Что я ищу: если a = {1, 2, 5, 6}
и b = [0, 7, 3, 9}
, то mergeDict = {1, 2, 5, 6, 0, 7, 3, 9}
Ответы
Ответ 1
Два способа (предполагая Python 3.6):
-
Используйте "метод обновления". Предположим, что есть два словаря:
>>> d1 = collections.OrderedDict([('a', 1), ('b', 2)])
>>> d2 = {'c': 3, 'd': 4}
>>> d1.update(d2)
>>> d1
OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4)])
-
Второй метод, использующий "оператор конкатенации (+)"
>>> d1 = collections.OrderedDict([('a', 1), ('b', 2)])
>>> d2 = {'c': 3, 'd': 4}
>>> d3 = collections.OrderedDict(list(d1.items()) + list(d2.items()))
>>> d3
OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4)])
Ответ 2
from itertools import chain
from collections import OrderedDict
OrderedDict(chain(a.items(), b.items()))
Ответ 3
вместо dict использовать обратно OrderedDict для mergeDict
mergeDict = collections.OrderedDict(a.items() + b.items())
Замечание: это работает только для python 2.x, add list() над dict.items() для python 3, потому что dict.items() больше не возвращает список, поддерживающий + операцию
или использовать a.update(b)
например, @alfasin упоминает в комментарии
я пытаюсь с простым примером, и оба метода хорошо работают для меня