fugro
@fugro
Начинающий кодер

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

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

for key0, value0 in result_dict.items():
        for key, value in value0.items():
            for key2, value2 in value.items():   # value2 - это список словарей
                 # генерируется ответ сервера в виде списка result
                 result = [{'point': 1, 'index': 4}, {'point': 2, 'index': 0}, {'point': 3, 'index': 3}]
                 
                 # обмен значениями между двумя списками словарей
                 if key == 'even_part_of_coords' and key0 == 'first_month_part':
                    for point in value2:
                        for p in result:
                            point.update({'№п/п четная нед.': p['index']})


На выходе получается, что всем словарям из списка value2 присваивается последний index = 3
[{'№п/п четная нед.': 3}, {'№п/п четная нед.': 3}, {'№п/п четная нед.': 3}]


А нужно
[{'№п/п четная нед.': 4}, {'№п/п четная нед.': 0}, {'№п/п четная нед.': 3}]


Где ошибка в коде? Может, вообще по-другому переписать?
Буду признателен любой подсказке.
  • Вопрос задан
  • 110 просмотров
Решения вопроса 1
Во первых что у тебя в value2
for point in value2:
    for p in result:
        point.update({'№п/п четная нед.': p['index']})

Берешь первый point и обновляешь его с начало [{'№п/п четная нед.': 4}, потом {'№п/п четная нед.': 0}, потом {'№п/п четная нед.': 3}]
Берешь второй и обновляешь его с начало [{'№п/п четная нед.': 4}, потом {'№п/п четная нед.': 0}, потом {'№п/п четная нед.': 3}]
Угадай что будет во всех поинтах
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы