2016-05-06 4 views
0

Я пытаюсь искать для каждого числа в кортежах и поставить другую свою пару в списке в качестве значенияУпорядочить пары кортежей в словаре?

числа узлов даются, но я не использовал его

Я не понимаю ошибка, как я могу это исправить?

nodes_number = 4 
dic = defaultdict(list) 
my_list = [(0,1),(1,2),(3,1)] 
for i in my_list: 
    dic[i[0]].append(i[1]) 
return dic 

мой код вывода

{0: [1], 1: [2], 3: [1]} 

Выход требуется

{0: [1], 1: [0, 2, 3], 2: [1], 3: [1]} 

ответ

2

Убедитесь, чтобы добавить как (х, у) и (у, х):

dic = defaultdict(list) 
my_list = [(0,1),(1,2),(3,1)] 
for x, y in my_list: 
    dic[x].append(y) 
    dic[y].append(x) 
+0

благодаря теперь своей работе, но есть ли другой способ использования node_number? потому что он занимает больше времени для многих кортежей – jack

+0

Номера узлов не нужны. Я не уверен, как вы могли бы использовать его в первом случае. Я не уверен, что добавление кода, который смотрит на номер узла, ускорит эту функцию. – phihag

2

Вы забыли добавить реверсе каждой пары, а также.

+0

благодаря теперь его рабочий, но есть другой способ, с помощью nodes_number? – jack

+0

Вы можете использовать его для инициализации dict с пустыми списками. –

+0

Можете ли вы показать мне, как мой код занимает больше времени для больших кортежей – jack

Смежные вопросы