2010-04-06 5 views
2

Если у меня есть два словаря, я хотел бы объединить в Python, т.е.Есть ли простой способ «добавить()« два словаря вместе в Python?

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

Если я запускаю обновление на них сортирует список:

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

когда то, что я действительно хочу приложить " б»до конца„а“:

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

есть простой способ прикрепить„Ъ“до конца„а“без необходимости вручную объединить их следующим образом:

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

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

+2

Метод 'update()' является правильным способом «комбинировать» словари, поэтому, возможно, вам нужно объяснить, почему вы хотите, что вы думаете, что хотите ... У вас на самом деле есть причина, по которой требуется словарь с конкретным или вы просто путаетесь с поведением, которое вы видели, но комбинированный словарь действительно подходит вам как есть? –

+0

Теперь это имеет большой смысл. Я думал, что словари имеют приказ, о котором говорили другие, неверно. – digitaldreamer

+0

Если заказ важен для вас, вы можете рассмотреть список кортежей вместо словаря. В противном случае, как отмечали другие, всегда есть OrderedDictionary. – jemfinch

ответ

11

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

+0

Отлично, спасибо вам большое за понимание. – digitaldreamer

2

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

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

2

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

0

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

1

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

Смежные вопросы