代码之家  ›  专栏  ›  技术社区  ›  user23819755

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

  •  0
  • user23819755  · 技术社区  · 1 年前

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

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

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

    1 回复  |  直到 1 年前
        1
  •  0
  •   patda9    1 年前

    使用 edges = set() 使您的结果无序。 没有直接的方法来使用python execpt中的有序集 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())