Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 23, 2018 07:05:01

korko
Зарегистрирован: 2018-01-23
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите отфильтровать словарь.

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

Офлайн

#2 Янв. 23, 2018 07:12:06

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Помогите отфильтровать словарь.

korko
линии от объектов (ключи) к объектам (их значения)
korko
что-бы небыло двойных связей (линий).

В словаре нельзя одному ключу присвоить несколько значений. В такой постановке вопрпоса двойные связи в вашей программе невозможны.



Офлайн

#3 Янв. 23, 2018 07:33:00

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9895
Репутация: +  854  -
Профиль   Отправить e-mail  

Помогите отфильтровать словарь.

  
>>> 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')]
>>>



Офлайн

#4 Янв. 23, 2018 07:33:35

korko
Зарегистрирован: 2018-01-23
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите отфильтровать словарь.

FishHook
Первая пара ('R1': ‘SW1') - рисуется линия от R1 до SW1,
и пара ('SW1': ‘R1)’ - рисуется вторая линия от SW1 до R1

Офлайн

#5 Янв. 23, 2018 08:08:21

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Помогите отфильтровать словарь.

korko
Первая пара ('R1': ‘SW1') - рисуется линия от R1 до SW1,
и пара ('SW1': ‘R1)’ - рисуется вторая линия от SW1 до R1

В вашем словаре нет пары (“SW1”: “R1”)
Вы можете в этом убедиться сделав print, есть пара ‘SW1’: ‘R3’



Офлайн

#6 Янв. 23, 2018 08:09:34

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Помогите отфильтровать словарь.

Здесь нет двойных связей



Офлайн

#7 Янв. 23, 2018 08:17:48

korko
Зарегистрирован: 2018-01-23
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите отфильтровать словарь.

py.user.next
Кортеж!
Большое спасибо.

Офлайн

#8 Янв. 23, 2018 08:24:53

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9895
Репутация: +  854  -
Профиль   Отправить e-mail  

Помогите отфильтровать словарь.

korko
Кортеж!
Это список кортежей, но можно и кортеж кортежей сделать. Просто список делается тогда, когда не гарантирована константность набора данных. Если константность (неизменность) набора данных гарантирована, то надо использовать кортеж. Очевидно, пары точно не будут меняться, поэтому они - кортежи. Но набор пар ещё может пополняться, изменяться или уменьшаться, поэтому этот набор - список.

FishHook
В словаре нельзя одному ключу присвоить несколько значений. В такой постановке вопрпоса двойные связи в вашей программе невозможны.
Не стал ждать, когда он скажет “а? да? проходит день… а! точно! проходит день… а как сделать это со списком?”.



Отредактировано py.user.next (Янв. 23, 2018 08:27:43)

Офлайн

#9 Янв. 23, 2018 08:27:18

korko
Зарегистрирован: 2018-01-23
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите отфильтровать словарь.

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’)}

Офлайн

#10 Янв. 23, 2018 08:44:09

korko
Зарегистрирован: 2018-01-23
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите отфильтровать словарь.

Еще раз простите . Туплю
Спасибо за помощь.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version