2015-10-03 3 views
-2

Привет У меня есть файл с этим форматом:Файл со смешанными ключами значений в словарь

1 5 
2 6 
3 6 
4 5 
5 6 
5 7 
5 8 
... 

и то, что я хочу, чтобы сделать словарь, как это:

1:5 
2:6 
3:6 
4:5 
5: 1, 4, 6, 7, 8 
6: 2, 3, 5, 
.... 

Файл является соединения между узлами неориентированного графа, и я хотел бы преобразовать его в словарь с узлом в качестве ключа и соседей этого узла в качестве значений (список смежности).

Моя проблема в том, что я не знаю, как получить данные из файла, чтобы они соответствовали узлу со всеми его соседями.

Я попробовал это,

nodeList = list() 
with open(file) as inputfile: 
    for line in inputfile.readlines(): 
     nodeList.append(tuple(line.strip().split())) 

d = defaultdict(list) 
for k, v in nodeList: 
    d[k].append(v) 

и результат является словарем: [...('5', ['6', '7', '8']),..., ('1', ['5']),.., ('4', ['5']).....] , но это не совсем правильно, потому что, например, я хочу 4 и 1 выступать в качестве значения в ключевых 5.

ответ

0

Нашел,

d = defaultdict(list) 
for k, v in nodeList: 
    d[k].append(v) 
    d[v].append(k) 

дает мне результат я хочу. Thx для меня.