Подтвердить что ты не робот

Как объединить 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}

4b9b3361

Ответ 1

Два способа (предполагая Python 3.6):

  1. Используйте "метод обновления". Предположим, что есть два словаря:

    >>> 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)])
    
  2. Второй метод, использующий "оператор конкатенации (+)"

    >>> 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 упоминает в комментарии

я пытаюсь с простым примером, и оба метода хорошо работают для меня