从文件加载的数据顺序不正确

0 投票
1 回答
18 浏览
提问于 2025-04-12 00:26

我有一个简单的程序,它的任务是从一个文件中读取图的描述,并返回一些值。

文件内容 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())

撰写回答