从文件加载的数据顺序不正确
我有一个简单的程序,它的任务是从一个文件中读取图的描述,并返回一些值。
文件内容 file.txt:
4 5
1 2
2 3
3 4
1 4
2 4
这里的4表示图中有4个顶点,而5表示图G中有5条边(所以我不想显示这个信息)
f = open('file.txt')
lines = f.readlines()
def get_edges_set(lines):
edges = set()
for line in lines[1:]:
edge = line.strip().split()
edges.add('-'.join(edge))
return edges
print(get_edges_set(lines))
我期待得到这样的输出:
{1-2, 2-3, 3-4, 1-4, 2-4}
但我实际得到的是:
{'2-3', '2-4', '1-2', '3-4', '1-4'}
我哪里出错了,为什么程序没有按照正确的顺序从文件中读取数据呢?
1 个回答
0
使用 edges = set()
会导致你的结果是无序的。也就是说,结果的顺序是不固定的。在Python中,没有直接的方法可以使用有序集合,除非你使用 ordered_set
这个包。或者你可以尝试一种不太干净的方法,通过字典的键来创建一个有序集合。
def get_edges_set(lines):
edges = {}
for line in lines[1:]:
edge = line.strip().split()
edges['-'.join(edge)] = None # set a key-value pair to the dictionary
return list(edges.keys())