Найти - Пользователи
Полная версия: Помогите отфильтровать словарь.
Начало » Центр помощи » Помогите отфильтровать словарь.
1
korko
Здравствуйте!
В graphviz делаю схему сети на основе словаря:
{'R1': ‘SW1’,
'R2': ‘SW1’,
'R2': ‘SW2’,
'R3': ‘SW1’,
'R3': ‘R4’,
'R3': ‘R5’,
'SW1': ‘R1’,
'SW1': ‘R2’,
'SW1': ‘R3’,},
где рисуются линии от объектов (ключи) к объектам (их значения).
Помогите пожалуйста отфильтровать словарь, что-бы небыло двойных связей (линий).
FishHook
korko
линии от объектов (ключи) к объектам (их значения)
korko
что-бы небыло двойных связей (линий).

В словаре нельзя одному ключу присвоить несколько значений. В такой постановке вопрпоса двойные связи в вашей программе невозможны.
py.user.next
  
>>> 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')]
>>>
korko
FishHook
Первая пара ('R1': ‘SW1') - рисуется линия от R1 до SW1,
и пара ('SW1': ‘R1)’ - рисуется вторая линия от SW1 до R1
FishHook
korko
Первая пара ('R1': ‘SW1') - рисуется линия от R1 до SW1,
и пара ('SW1': ‘R1)’ - рисуется вторая линия от SW1 до R1

В вашем словаре нет пары (“SW1”: “R1”)
Вы можете в этом убедиться сделав print, есть пара ‘SW1’: ‘R3’
FishHook
Здесь нет двойных связей
korko
py.user.next
Кортеж!
Большое спасибо.
py.user.next
korko
Кортеж!
Это список кортежей, но можно и кортеж кортежей сделать. Просто список делается тогда, когда не гарантирована константность набора данных. Если константность (неизменность) набора данных гарантирована, то надо использовать кортеж. Очевидно, пары точно не будут меняться, поэтому они - кортежи. Но набор пар ещё может пополняться, изменяться или уменьшаться, поэтому этот набор - список.

FishHook
В словаре нельзя одному ключу присвоить несколько значений. В такой постановке вопрпоса двойные связи в вашей программе невозможны.
Не стал ждать, когда он скажет “а? да? проходит день… а! точно! проходит день… а как сделать это со списком?”.
korko
FishHook
Простите. Словарь был мной упрощен.
Реальный словарь выглядет так:
{('R1', ‘Eth 0/0’): ('SW1', ‘Eth 0/1’),
…: ('R2', ‘Eth 0/0’): ('SW1', ‘Eth 0/2’),
…: ('R2', ‘Eth 0/1’): ('SW2', ‘Eth 0/11’),
…: ('R3', ‘Eth 0/0’): ('SW1', ‘Eth 0/3’),
…: ('R3', ‘Eth 0/1’): ('R4', ‘Eth 0/0’),
…: ('R3', ‘Eth 0/2’): ('R5', ‘Eth 0/0’),
…: ('SW1', ‘Eth 0/1’): ('R1', ‘Eth 0/0’),
…: ('SW1', ‘Eth 0/2’): ('R2', ‘Eth 0/0’),
…: ('SW1', ‘Eth 0/3’): ('R3', ‘Eth 0/0’)}
korko
Еще раз простите . Туплю
Спасибо за помощь.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB