我有一个简单的程序,其任务是从文件中读取图形描述并返回值。
文件.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'}
我在哪里犯了错误,为什么它没有以正确的顺序从文件中读取数据?
使用
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())