Как объединить 3 списка в словарь в Python

origen=['Philadelphia', 'New Orleans']
destino=['Atlanta', 'Dallas', 'Columbus', 'Boston']
costo=[ ['2','6','6','2'] , ['1','2','5','7'] ]

Как мне нужно, чтобы они были объединены:

costo_envios={
              Philadelphia:{
                          Atlanta:2
                          Dallas:6
                          Columbus:6
                          Boston:2
                           }
              New Orleans:{
                           Atlanta:1
                           Dallas:2
                           Columbus:5
                           Boston:7             
                           }
             }

Я думал об использовании, может быть, двух вложенных for, но получаю ошибку «unlashable», что означает, что я использую неправильный тип индекса.

Я также пробовал это:

costo_envio={origen[l]:{destino[m]:costo[n]} for l,m,n in range(len(origen))}

Но я получил эту ошибку:

TypeError: cannot unpack non-iterable int object

Я действительно новичок в Python, только начал самостоятельно в этом месяце. Как мне это сделать?

Что вы пробовали? Вы смотрели на itertools в стандартной библиотеке?

Bakuriu 22.04.2022 18:49
минимальный воспроизводимый пример и трассировка стека. «Неудаляемая ошибка» означает, что вы пытаетесь использовать словарь, набор или список как КЛЮЧ, что невозможно.
Patrick Artner 22.04.2022 18:49
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
3
2
37
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Определите желаемую структуру и позвольте распознаванию словаря Python работать.

res = {o: {d:c for d, c in zip(destino, co)} for o, co in zip(origen, costo)}

Вы также можете построить 2 вложенных цикла for, если считаете, что их легче читать.

Вы можете взглянуть на документацию Python и начать изучать петли и литеральный синтаксис диктовать.

Вот одна реализация, использующая концепцию понимание и функцию zip:

costo_envio = {o: {d: int(c) for d, c in zip(destino, co)} for o, co in zip(origen, costo)}

# {'Philadelphia': {'Atlanta': 2, 'Dallas': 6, 'Columbus': 6, 'Boston': 2},
#  'New Orleans': {'Atlanta': 1, 'Dallas': 2, 'Columbus': 5, 'Boston': 7}}
Ответ принят как подходящий

добро пожаловать!

Вы можете использовать 2 цикла for, внешний для перебора источников и списков затрат, а внутренний для перебора пунктов назначения и затрат.

Вот мой код, надеюсь, он поможет!

origen = ['Philadelphia', 'New Orleans']
destino = ['Atlanta', 'Dallas', 'Columbus', 'Boston']
costo = [['2', '6', '6', '2'], ['1', '2', '5', '7']]

my_dict = {}

for origin, cost_list in zip(origen, costo):
    my_dict[origin] = {}
    for dest, cost in zip(destino, cost_list):
        my_dict[origin][dest] = cost

Удачи!

Это сработало!! Большое спасибо! Код было легко читать, и я мог легко его понять!

Emico 22.04.2022 19:15

@Эмико Отлично! Хорошо, как с учебой. Отметьте «V» рядом с ответом, который помог вам, чтобы другие пользователи знали, что на этот вопрос был дан ответ.

Bar Ifrah 22.04.2022 19:57

Используя тот факт, что список пар можно превратить в словарь.

d = dict(zip(origen, (dict(zip(*pairs)) for pairs in zip([destino]*len(costo), costo))))

print(d)

Другие вопросы по теме