python - 如何从 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 时,我不知道如何获取坐标值。
解决方案
get_nodes()
不是您应该为此使用的工具。get_nodes()
仅用于返回节点上的迭代器;这个迭代器有时是 OrderedDict 上的迭代器这一事实是一个实现细节,它并不总是一个 OrderedDict 迭代器。
如果要访问具有节点坐标的问题实例的节点坐标,则应使用get_graph()
并检查 NetworkX节点属性;节点的坐标将位于'coord'
节点属性下。
推荐阅读
- javascript - Express 不提供 Gzipped 资产
- vue.js - VueJS 函数与 then
- php - Laravel 与 firstOrCreate 同步多对多
- php - 未找到 PHPMailer 类
- java - 访问作为 Access 中链接表的外部数据库的文本文件
- mysql - Laravel 蓝图默认函数的奇怪反斜杠行为
- javascript - 需要加载innerHTML然后运行函数
- javascript - AngularJS - 将具有相同值的数组中的对象分组到一个新数组中
- sql - 使用 CTE 更新表,然后删除不再有效的记录
- r - r raster clusterR 运行覆盖时出错