Форум программистов, компьютерный форум, киберфорум
Наши страницы
Python
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Petrol1342
2 / 2 / 2
Регистрация: 11.09.2013
Сообщений: 22
#1

Сложение словарей - Python

16.05.2014, 08:11. Просмотров 2255. Ответов 5
Метки нет (Все метки)

Доброго времени суток. Возникла потребность написать функцию, которая бы выполняла сложение двух одинаковых словарей, т.е. оба словаря одинаковой длины и ключи их совпадают, различаются только значения. Например:

{(0, 1): 0, (1, 0): 0, (0, 0): 0, (1, 1): 0} и {(0, 0): 1, (1, 0): 2, (1, 1): 3, (0, 1): 4}

Главная проблема заключается в том, что элементы в словарях не упорядочены, а надо чтобы функция выполняла сложение именно по одинаковым ключам. Никак не могу придумать такой алгоритм. Возвращать функция должна словарь, в котором уже будет результат от сложения двух этих словарей. Подскажите пожалуйста как это можно реализовать?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2014, 08:11
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Сложение словарей (Python):

Объединение словарей Python
Господа, помогите разобраться в задаче: необходимо объединить два прайс-листа...

Сравнение значений словарей
Здравствуйте, господа программисты! Сам я только начинающий программист в...

Динамическое создание новых словарей
Здравствуйте, такой вопрос: как можно сделать динамическое создание новых...

Форматирование при выводе словарей
Господа, нужна в очередной раз помощь советом. Имею словарь, содержащий...

Создать словарь словарей из строки
Есть словарь dictFullDataParse. Нужно из приходящей строки создать подсловари и...

Правильно отсортировать словарь словарей
Есть словарь словарей вида xx = {'word1': {'fn1.txt': 0, 'fn2.txt': 0,...

5
dondublon
2114 / 1033 / 209
Регистрация: 17.03.2012
Сообщений: 6,320
Записей в блоге: 5
16.05.2014, 08:54 #2
Лучший ответ Сообщение было отмечено Petrol1342 как решение

Решение

А зачем вам упорядоченность?
Решение "в лоб":
Python
1
2
for key, value in dic1.items():
    dic_result[key] = value+dic2[key]
Но где-то я видел функцию, которая это делает, то ли в самом питоне, то ли в сторонней библиотеке, вспомню - напишу.

Добавлено через 12 минут
Во, вспомнил.
Python
1
2
3
4
5
6
from collections import Counter
dict1 = {(0, 1): 0, (1, 0): 0, (0, 0): 0, (1, 1): 0}
c1 = Counter(dict1)
dict2 =  {(0, 0): 1, (1, 0): 2, (1, 1): 3, (0, 1): 4}
c2 = Counter(dict2)
c1+c2
Вывод Counter({(0, 1): 4, (1, 1): 3, (1, 0): 2, (0, 0): 1})

Там же есть класс OrderedDict, может помочь, если надо вручную сложить.
1
Petrol1342
2 / 2 / 2
Регистрация: 11.09.2013
Сообщений: 22
16.05.2014, 08:55  [ТС] #3
Спасибо, то что нужно!
0
dondublon
2114 / 1033 / 209
Регистрация: 17.03.2012
Сообщений: 6,320
Записей в блоге: 5
16.05.2014, 08:58 #4
Petrol1342, могу только посоветовать вам ещё раз прочитать мой ответ.
Простой словарь разумеется не упорядочен, это не его дело - быть упорядоченным.
1
Petrol1342
2 / 2 / 2
Регистрация: 11.09.2013
Сообщений: 22
16.05.2014, 09:08  [ТС] #5
Цитата Сообщение от dondublon Посмотреть сообщение
Petrol1342, могу только посоветовать вам ещё раз прочитать мой ответ.
Простой словарь разумеется не упорядочен, это не его дело - быть упорядоченным.
Все правильно, я Вас понял. Спасибо!
0
dondublon
2114 / 1033 / 209
Регистрация: 17.03.2012
Сообщений: 6,320
Записей в блоге: 5
16.05.2014, 09:13 #6
Незашто пиши исчо
0
16.05.2014, 09:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2014, 09:13
Привет! Вот еще темы с решениями:

Получить один элемент из списка словарей
Подскажите пожалуйста, как реализовать: Есть json ответ вида Хочется иметь...

Как объединить статистику из разных словарей?
Здравствуйте. Имеется, например, dict, в котором статистика по каждому слову...

Как разбить один словарь на 2 и больше словарей?
есть словарь где ключи это якобы координата точки, а значение это яркость этой...

написать программу - телефонный справочник (на основании словарей)
Здравствуйте, в общем нужно написать программу - телефонный справочник (на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru