Python字典排序
我正在写一个网页应用程序,它需要一个json文件,这个文件里的json对象在Python列表中要按照正确的顺序排列。应该是先x再y,但无论我怎么尝试,返回的值总是y在前,x在后。
list: [{'y': 0.0, 'x': 1360633172168}, {'y': 0.0, 'x': 1360633172168}, ...
有没有人能帮我看看,怎么在把这些值输出到控制台之前重新排序呢?
label = ["x", "y"]
sen = []
for i in average:
now = int(round(time.time() * 1000))
l = now, i[0]
sen.append(l)
x = [dict(zip(label, e)) for e in sen]
我尝试了几种方法,但每次得到的结果都是一样的。
亚当
3 个回答
0
如果你真的需要让键值对按特定顺序排列,那你就得手动构建你的“JSON”输出,因为Python的dict
和json
模块都不支持固定的键顺序。
6
唯一的解决办法是传递一个数组,或者在Python这边存储一个排序好的键的顺序,然后用这个顺序来访问字典。
JSON:
{
"order": ["x", "y"],
"d": {x: 34, y:36}
}
PYTHON:
for key in order:
print d[key]
这样你就可以按照正确的顺序遍历字典的键了。
字典是一种哈希表的形式,因此它们不会保留键的顺序。
6
你可能想了解一下 collections.OrderedDict
这个东西。
In [9]: d = collections.OrderedDict()
In [10]: d['x'] = 1360633172168
In [11]: d['y'] = 0.0
In [12]: d
Out[12]: OrderedDict([('x', 1360633172168), ('y', 0.0)])
In [13]: d['x']
Out[13]: 1360633172168
In [14]: d['y']
Out[14]: 0.0