Python-从文本文件到字典的邻接表

问题描述 投票:-1回答:1

使用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
python dictionary input text adjacency-list
1个回答
0
投票

使用open()功能读取文本文件非常简单。我建议使用.read()方法,而不是遍历打开的文件来读取行,因为将文件批量读取到内存中的速度比遍历磁盘上的文件要快得多。当然,如果文件小于您的RAM。 .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:]

© www.soinside.com 2019 - 2024. All rights reserved.