Python - список смежности из текстового файла в словарь - PullRequest
0 голосов
/ 26 мая 2020

С помощью networkx я могу создать текстовый файл, который представляет список смежности графа. Мне нужно преобразовать текстовый файл в словарь. Таким образом, ключ - это крайнее левое число в каждой строке, а это список значений для остальных чисел справа в строке. Список значений иногда может быть пустым. Мы можем назвать входной файл test.txt. Спасибо!

Например, вот что я ищу: {1: [], 2: [3,7], 3: [4,7,9], 4: [7,9], 9: []}

Это текстовый файл, созданный для преобразования:

#adjlist.py
# GMT Tue May 26 14:48:55 2020
# 
1
2 3 7
3 4 7 9
4 7 9
7 9
9

1 Ответ

0 голосов
/ 26 мая 2020

С функцией open() чтение текстового файла тривиально. Я предлагаю использовать метод .read(), а не итерацию по открытому файлу для чтения строк, так как массовое чтение файла в память на намного быстрее, чем итерация по строкам из файла на диске. Это, конечно, если файл меньше вашей оперативной памяти. .strip() возвращает копию строки с удалением начальных и конечных символов. .split() разделяется с заданным разделителем, здесь мы используем \n, чтобы разбить файл на строки.

Наконец, мы перебираем каждую строку и вызываем .split() в строке, на этот раз с разделением по пробелу. Это возвращает список элементов, где индексированный элемент [0] будет вашим ключом, а остальные ([1:]) будут вашими значениями.

Вы можете использовать defaultdict из построенного collections -в библиотеке для объединения нескольких элементов в один ключ словаря.

from collections import defaultdict

with open("test.txt") as f:
    lines = f.read().strip().split("\n")

d = defaultdict(list)

for line in lines:
    ls = line.split(" ")
    d[ls[0]] = ls[1:]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...