我正在使用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时,我不知道如何获取坐标的值。
答案 0 :(得分:1)
您将需要使用其他迭代器。默认迭代器不知道值,仅键。 例如
>>> od = OrderedDict([('a', 1), ('b', 2)])
>>> iterator = iter(od.items())
>>> print(list(iterator))
[('a', 1), ('b', 2)]
在Python 2中,您还可以执行iterator = od.iteritems()
答案 1 :(得分:0)
get_nodes()
不是您应该用于此的工具。 get_nodes()
仅用于在节点上返回迭代器;该迭代器有时是OrderedDict上的迭代器,这一事实是实现细节,并且不一定总是OrderedDict迭代器。
如果要访问具有节点坐标的问题实例的节点坐标,则应使用get_graph()
并检查NetworkX node attributes;节点的坐标将在'coord'
节点属性下。