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