Форум сайта python.su
Здравствуйте!
В graphviz делаю схему сети на основе словаря:
{'R1': ‘SW1’,
'R2': ‘SW1’,
'R2': ‘SW2’,
'R3': ‘SW1’,
'R3': ‘R4’,
'R3': ‘R5’,
'SW1': ‘R1’,
'SW1': ‘R2’,
'SW1': ‘R3’,},
где рисуются линии от объектов (ключи) к объектам (их значения).
Помогите пожалуйста отфильтровать словарь, что-бы небыло двойных связей (линий).
Офлайн
korko
линии от объектов (ключи) к объектам (их значения)
korko
что-бы небыло двойных связей (линий).
Офлайн
>>> lst = [('R1', 'SW1'), ... ('R2', 'SW1'), ... ('R2', 'SW2'), ... ('R3', 'SW1'), ... ('R3', 'R4'), ... ('R3', 'R5'), ... ('SW1', 'R1'), ... ('SW1', 'R2'), ... ('SW1', 'R3'), ... ('SW2', 'R3')] >>> >>> out = [] >>> for i, j in lst: ... if (j, i) not in out: ... out.append((i, j)) ... >>> out [('R1', 'SW1'), ('R2', 'SW1'), ('R2', 'SW2'), ('R3', 'SW1'), ('R3', 'R4'), ('R3', 'R5'), ('SW2', 'R3')] >>>
Офлайн
FishHookПервая пара ('R1': ‘SW1') - рисуется линия от R1 до SW1,
Офлайн
korko
Первая пара ('R1': ‘SW1') - рисуется линия от R1 до SW1,
и пара ('SW1': ‘R1)’ - рисуется вторая линия от SW1 до R1
Офлайн
Здесь нет двойных связей
Офлайн
py.user.nextКортеж!
Офлайн
korkoЭто список кортежей, но можно и кортеж кортежей сделать. Просто список делается тогда, когда не гарантирована константность набора данных. Если константность (неизменность) набора данных гарантирована, то надо использовать кортеж. Очевидно, пары точно не будут меняться, поэтому они - кортежи. Но набор пар ещё может пополняться, изменяться или уменьшаться, поэтому этот набор - список.
Кортеж!
FishHookНе стал ждать, когда он скажет “а? да? проходит день… а! точно! проходит день… а как сделать это со списком?”.
В словаре нельзя одному ключу присвоить несколько значений. В такой постановке вопрпоса двойные связи в вашей программе невозможны.
Отредактировано py.user.next (Янв. 23, 2018 08:27:43)
Офлайн
FishHookПростите. Словарь был мной упрощен.
Офлайн
Еще раз простите . Туплю
Спасибо за помощь.
Офлайн