Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 9, 2009 15:57:49

pyOut
От:
Зарегистрирован: 2006-07-16
Сообщения: 125
Репутация: +  0  -
Профиль   Отправить e-mail  

Слияние словарей

Как можно соединить 2 словаря?
К примеру

a = {'a': '1', 'b': '2', 'c':'3'}
b = {'d': '4', 'e':'5'}
Чтобы получилось
c = {'a': '1', 'b': '2', 'c':'3', 'd': '4', 'e':'5'}



Офлайн

#2 Дек. 9, 2009 16:09:26

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Слияние словарей

Можно использовать метод “uрdate”, но надо иметь в виду, что если ключ есть в обеих словарях, то он будет заменён на новый.

Офлайн

#3 Дек. 9, 2009 16:26:48

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

Слияние словарей

или так, с тем же результатом, но наверно медленней.

def mer(dict1, dict2):
buf = dict2.copy()
for i,j in dict1.iteritems():
buf[i] = j
return buf



Офлайн

#4 Дек. 9, 2009 16:35:46

Kogrom
От:
Зарегистрирован: 2009-12-03
Сообщения: 160
Репутация: +  0  -
Профиль   Отправить e-mail  

Слияние словарей

update, вероятно, эффективнее всего. Ещё можно так:

a = {'a': '1', 'b': '2', 'c':'3''}
b = {'d': '4', 'e':'5'}

c = dict(a.items() + b.items())



Офлайн

#5 Дек. 9, 2009 16:44:33

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

Слияние словарей

>> c = dict(a.items() + b.items())
Зато так всех короче!



Офлайн

#6 Дек. 9, 2009 16:54:07

pyOut
От:
Зарегистрирован: 2006-07-16
Сообщения: 125
Репутация: +  0  -
Профиль   Отправить e-mail  

Слияние словарей

Ок, спасибо. А можно ли как-то явно установить последовательность ключей?



Офлайн

#7 Дек. 9, 2009 17:07:36

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Слияние словарей

Нет.

Офлайн

#8 Дек. 9, 2009 17:28:16

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Слияние словарей

Ferroman
А можно ли как-то явно установить последовательность ключей?
Ferroman
Нет.
Хочу немножко дополнить ответ:
Есть продукт, реализующий отсортированный словарь для версий 2.х: http://pypi.python.org/pypi/sorteddict
Если вы счастливый обладатель Python3k - то можно: http://docs.python.org/3.1/whatsnew/3.1.html
Ну, а если вы, так сказать, “cutting edge” юзер, и уже используете альфа версию Python 2.7, то - http://docs.python.org/dev/whatsnew/2.7.html#pep-372-adding-an-ordered-dictionary-to-collections



Отредактировано (Дек. 9, 2009 17:28:36)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version