Словарь, где значения могут быть либо списком, либо списком списков.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Словарь, где значения могут быть либо списком, либо списком списков.

Сообщение Anonymous »


Я пытаюсь построить график результатов оптимизации маршрутов грузовиков с помощью библиотеки networkx. Сначала мне нужно подготовить данные, и я застрял.

Вот небольшой пример исходных данных:

Маршрут автомобиля 0 В0 [0,3](В0) 1 В0 [3,0](В0) 2 В1 [0,3](В1) 3 В1 [0,8](В1) 4 В1 [2,0](В1) 5 В1 [3,2](В1) 6 В1 [8,0](В1) Есть два грузовика: V0 и V1. Маршрут для V0: от 0 до 3 до 0. Но у V1 есть ДВА маршрута: от 0 до 8 до 0 И от 0 до 3 до 2 до 0.

Каждый обход должен начинаться и заканчиваться в узле 0.

Мне нужно решить две проблемы:
[*]Для каждого грузовика (V0, V1) я должен найти все туры в заданном списке, который начинается и заканчивается нулем. [*]Поток туров не может иметь перерывов: конец каждого подтура [0,8] должен быть началом следующего [8,0]
Окончательный результат должен выглядеть:

{'V0': [0,3,0], 'V1': [[0,3,2,0], [0,8,0]]} У меня есть код, но он не дает того, что я хочу:

tours = {'V0': ['0,3', '3,0'], 'V1': ['0,3', '0,8', '2,0', '3,2', '8,0']} защита Convert_to_list(s): список возврата(map(int, s.split(','))) # Функция для обработки каждого значения в словаре Tours Защиту Process_value (значение): результат = [] текущий_список = [] за пару по стоимости: пара_список = конвертировать_в_список (пара) если не текущий_список или пара_список[0] == 0: current_list.extend(pair_list) элиф пара_список[1] == 0: current_list.append(pair_list[0]) current_list.append(0) result.append(текущий_список) текущий_список = [0] еще: current_list.append(pair_list[0]) если текущий_список: current_list.append(0) result.append(текущий_список) вернуть результат # Создайте словарь «tours1», используя функции обработки Tours1 = {ключ: Process_value(значение) для ключа, значение в Tours.items()} # Распечатываем результат распечатать(туры1) ВЫВОД:

{'V0': [[0, 3, 3, 0], [0, 0]], 'V1': [[0, 3, 0, 8, 2, 0], [0 , 3, 8, 0], [0, 0]]} Есть идеи?

Спасибо!
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»