Я начинаю понимать и реализовывать словарное сопоставление. Я пытаюсь построить словарь с вложенными словарей, как это:python словарь для понимания словарей с вложенными циклами
{serviceA: {ip_server1: флаг, ip_server2: флаг ...}, {serviceB ip_server1: флаг, ip_server_2: флаг ... и т.д.}}
У меня возникли проблемы с его построением, как при получении результата. Он просто бросает меня на последний элемент. Я пробовал много способов, и все ведет то же самое. Вот код, который я использовал:
СЛОВАРЬ 1:
services_dict = {key_service: value for key_service,value in config_file.iteritems() if key_service.startswith("s-")}
#It returns a dictionary in this form {service1: [list_of_flags]}
Тогда у меня есть внешний список, который имеет IP-адреса сервера
server_list = [S1, S2, S3, S4 .. и т.д.]
После этого я хочу использовать DIC понимание построить полный словарь:
new_services_dict = { key1: {key2:fl} for key1, flag_list in corrected_dict.items() for key2, fl in zip(server_list, flag_list)}
Проблема заключается в том, что она только возвращает последний элемент списка IP (1 элемент только)
{ 'ServiceA': { 'last_server_ip_in_list': 'Last_flag_in_list'}}
Я не уверен, почему он не добавляет новые значения и просто берет последний элемент на итерации.
Любая помощь была бы принята с благодарностью. Я уже пробовал много способов, и я не могу узнать, какая часть итераиона мне не хватает.
ОБНОВЛЕНО INFO
В соответствии с просьбой в Coment ниже здесь некоторые выборочные данные для выяснения вопроса: Пусть говорят, что мы должны сопоставить список студентов, которые я отделенных от словаря, который содержит субъекты колледжа с сортами:
services_dict = {математика: [ 'A', 'B', 'C', 'D'], баз данных: [ 'B', 'C', 'D' , 'A']} Список студентов = ['Jhon', 'Michael', 'Leslie', 'Lorraine']
Оценки указаны соответственно из списка учеников, так что это не проблема (от кого класс принадлежит кому).
Что предназначил, чтобы получить словарь в виде:
{ 'математики': { 'Jhon': 'А', 'Michael': 'B', 'Лесли': 'C ',' Лотарингия ':' D '}, Базы данных: {' Jhon ':' B ',' Michael ':' C ',' Leslie ':' D ',' Lorraine ':' A '}}
проблема я получаю что new_services_dict возвращает только:
{ 'математика: {' Лотарингия ':' D '}
Я надеюсь, что это яснее, чем объяснение выше.
Мое первое предположение заключалось в том, что 'key1' - это не то, что вы думаете, и все они одинаковы, поэтому вы получаете одну запись. Поместите некоторые фактические структуры данных образца для corrected_dict, server_list и flag_list, чтобы мы могли сориентироваться. – sberry
Я обновил вопрос с помощью образца. Надеюсь, это яснее. Во всяком случае, ответ ниже работает просто отлично. – Pines