从文件加载的数据未按正确的顺序返回

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

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

文件.txt:

4 5 
1 2    
2 3    
3 4    
1 4    
2 4

其中4代表图的顶点数,5代表图G的边数(所以我不想展示)

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'}

我在哪里犯了错误,为什么它没有以正确的顺序从文件中读取数据?

python python-3.x file file-io
1个回答
0
投票

使用

edges = set()
使你的结果无序。 没有直接的方法可以使用
ordered_set
包在 python execpt 中使用有序集,或者您可以尝试(不是那么干净的方式)从字典键创建有序集。

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())
© www.soinside.com 2019 - 2024. All rights reserved.