Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2023, 17:48   #1
polin11
Форумчанин
 
Регистрация: 07.06.2015
Сообщений: 164
По умолчанию Поэлементное сложение списков с вложенными словарями

Есть 2 списка всегда из 5 элементов - словарей, значения которых тоже словарь например
Код:
x = [{'2': {'1': 7}, '3':{'1':0, '5': 0}}, {}, {}, {}, {}]
y = [{'2': {'1': 1, '2': 5}}, {}, {}, {}, {}]
в итоге нужно сложить поэлементно два этих списка
Должно получиться
Код:
x + y =   [{'2': {'1': 8, '2': 5}, '3':{'1':0, '5': 0}}, {}, {}, {}, {}]
начал писать запутался в циклах, просьба помочь
polin11 вне форума Ответить с цитированием
Старый 31.10.2023, 02:07   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
def merge(a, b):
    if type(a) is int and type(b) is int:
        return a + b

    if type(a) is dict and type(b) is dict:
        d = a | b
        for k in a.keys() & b.keys():
            d[k] = merge(a[k], b[k])
        return d

    raise RuntimeError("Can't merge different types")

x = [{'2': {'1': 7}, '3':{'1':0, '5': 0}}, {}, {}, {}, {}]
y = [{'2': {'1': 1, '2': 5}}, {}, {}, {}, {}]

z = [merge(a, b) for a, b in zip(x, y)]
print(z)
Первое, что пришло в голову.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с вложенными запросами konsa SQL, базы данных 3 12.01.2023 11:38
Проблема с вложенными TComponent giaour Компоненты Delphi 0 03.07.2011 23:12
Воспользуйтесь вложенными циклами Spark3r Общие вопросы C/C++ 1 30.06.2010 12:09
Проблема с вложенными записями Tesmont Общие вопросы C/C++ 4 12.05.2009 23:02
Сложение длинных чисел одного знака при помощи двунаправленных связанных списков Povar Паскаль, Turbo Pascal, PascalABC.NET 0 11.12.2008 14:35