首页 > 解决方案 > 如何从 odict_iterator 中获取 OrderedDict 值?

问题描述

我正在使用 tsplib95 来解析 .tsp 文件。我想从 tsplib95 的问题类中获取节点列表。我检查了文档,get_nodes() 方法在节点的 OrderedDict 上返回一个 iter()。

如何使用迭代器访问 OrderedDict 的值?我只能使用迭代器迭代键值。

OrderedDict 看起来像这样:
OrderedDict([(1, (20833.3333, 17100.0)), ..., (29, (27462.5, 12992.2222))])

我尝试在 for 循环中获取坐标值并使用next () 方法。

            tsp_instance = tsplib95.load_problem(file.value)
            iterator = tsp_instance.get_nodes()

            print(next(iterator))
            print(iterator.__next__())

            for i in iterator:
                print(i)

但是所有这些都只能访问 OrderedDict 中的键,当我没有原始 OrderedDict 时,我不知道如何获取坐标值。

标签: python

解决方案


get_nodes()不是您应该为此使用的工具。get_nodes()仅用于返回节点上的迭代器;这个迭代器有时是 OrderedDict 上的迭代器这一事实是一个实现细节,它并不总是一个 OrderedDict 迭代器。

如果要访问具有节点坐标的问题实例的节点坐标,则应使用get_graph()并检查 NetworkX节点属性;节点的坐标将位于'coord'节点属性下。


推荐阅读