Есть ли простой способ "добавить ()" два словаря вместе в Python? - PullRequest
2 голосов
/ 06 апреля 2010

Если у меня есть два словаря, которые я бы хотел объединить в Python, то есть

a = {'1': 1, '2': 2}
b = {'3': 3, '4': 4}

Если я запустил обновление для них, он переупорядочил бы список:

a.update(b)
{'1': 1, '3': 3, '2': 2, '4': 4}

, когда ядействительно нужно прикрепить "b" к концу "a":

{'1': 1, '2': 2, '3': 3, '4': 4}

Есть ли простой способ присоединить "b" к концу "a", не комбинируя их вручную так:

for key in b:
    a[key]=b[key]

Что-то вроде + = или append () было бы идеальным, но, конечно, ни один из них не работает со словарями.

Ответы [ 5 ]

11 голосов
/ 06 апреля 2010

Словарь Python не имеет порядка - если на практике элементы появляются в определенном порядке, это является просто побочным эффектом конкретной реализации и на него не следует полагаться.

2 голосов
/ 06 апреля 2010

Словари не заказываются. Если вам нужно заказать, вы можете попробовать что-то вроде списка.

2 голосов
/ 06 апреля 2010

Словари неупорядочены: у них нет ни начала, ни конца. Используете ли вы update или цикл for, конечный результат все равно будет неупорядоченным.

Если вам нужно упорядочить, используйте вместо этого список кортежей. Python 3.1 имеет тип OrderedDict, который также будет в Python 2.7.

1 голос
/ 06 апреля 2010

В стандартной библиотеке есть упорядоченный словарь на Python 3.1.1 , но варианты его использования ограничены. Обычно, если вы используете словарь, вы просто заинтересованы в сопоставлении ключей со значениями, а не в порядке. Существуют различные рецепты для упорядоченных словарей, если вы не используете Python 3.x, но вам следует сначала спросить себя, важен ли порядок и, если да, используете ли вы правильную структуру данных.

0 голосов
/ 06 апреля 2010

Я думаю, вы неправильно понимаете использование словарей. Вы не получаете доступ к ним последовательности или местоположения. Вы получаете к ним доступ с помощью ключей, которые в вашем случае также являются цифрами. Это хеш-таблицы и должны работать так. Вы делаете это правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...