Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从odict_迭代器中获取OrderedDict值?_Python - Fatal编程技术网

Python 如何从odict_迭代器中获取OrderedDict值?

Python 如何从odict_迭代器中获取OrderedDict值?,python,Python,我正在使用tsplib95解析.tsp文件。我想得到一个节点列表 超出tsplib95的问题类。我检查了文件,还有 get_nodes()方法在节点的OrderedDict上返回一个iter() 如何使用迭代器访问OrderedDict的值? 我只能使用迭代器对键值进行迭代 OrderedDict如下所示: OrderedDict([(1,(20833.333317100.0)),…,(29,(27462.512992.2222))) 我尝试在for循环中获取坐标值,并使用next()方法 但所

我正在使用tsplib95解析.tsp文件。我想得到一个节点列表 超出tsplib95的问题类。我检查了文件,还有 get_nodes()方法在节点的OrderedDict上返回一个iter()

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

OrderedDict如下所示:
OrderedDict([(1,(20833.333317100.0)),…,(29,(27462.512992.2222)))

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

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

您需要获得不同的迭代器。默认迭代器不知道值,只知道键。 比如说

>>> od = OrderedDict([('a', 1), ('b', 2)])
>>> iterator = iter(od.items())
>>> print(list(iterator))
[('a', 1), ('b', 2)]
在Python2中,您还可以执行iterator=od。iteritems()

获取节点()
不是用于此操作的工具
get_nodes()
仅用于在节点上返回迭代器;这个迭代器有时是OrderedICT上的迭代器,这是一个实现细节,它并不总是OrderedICT迭代器


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

是否尝试了迭代器中键、值的
。items():
?可能重复@accdias是的,我已经尝试过了。I get AttributeError:'odict\u iterator'对象没有属性'items'。请检查。无论如何,为什么要为此使用
get\u节点
?谢谢!我尝试使用get_nodes()的主要原因是,我注意到在多次运行脚本之后,NetworkX绘图一直不一样,我想看看发生了什么。现在我检查了节点属性,网络中的数据实际上与.tsp文件中的数据相同。我将更仔细地查看NetworkX库,并了解到底发生了什么。
>>> od = OrderedDict([('a', 1), ('b', 2)])
>>> iterator = iter(od.items())
>>> print(list(iterator))
[('a', 1), ('b', 2)]