0

当我连续使用 row.values() 时,值是如何排序的graphlab.SFrame

例如:

import graphlab as gl
x = gl.SFrame({'X200':[1,2,3], 'X100':[4,5,6], 'X1': [7,8,9]})
row = x[0] # first row
print row.values()

[出去]:

[ 7, 4, 1]

所以看起来它们是按键/列名排序的,但这总是真的吗?任何指向 python 字典或 SFrame 文档的指针都将不胜感激。

4

2 回答 2

1

不,row.values()不会返回排序列表,因为row它是一个 python 字典并且它是未排序的。

为了证明这一点:

>>> x = gl.SFrame({'X1': ['foo', 'bar', 'blah'], 'X3':[1,2,3], 'X2':[4,5,6]})
>>> x[0].values()[1:]
[1, 'foo']

似乎要获得排序的值,您必须先进行一些键排序:

>>> _, v = zip(*sorted(x[0].items())[1:])
>>> v
(4, 1)
于 2016-01-11T01:50:18.417 回答
0

这更像是一个 Python 字典问题(请参阅 Python 字典中的键顺序)。在 python 中,该.values()方法以任意顺序返回值。SFrame 的一行是一个字典。

于 2016-01-15T07:01:37.857 回答