我正在编写一个Web应用程序,它希望json文件在python列表中具有正确的json对象排序。它应该按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]
我已经尝试了几种方法,每次都得到相同的结果。
亚当
答案 0 :(得分:6)
唯一的解决方案是传递一个数组,或者存储命令python一边的已排序的键,并使用它来访问dict。
JSON:
{
"order": ["x", "y"],
"d": {x: 34, y:36}
}
PYTHON:
for key in order:
print d[key]
这将允许您按正确的顺序浏览dict键。
Dicts是hash map的一种形式,因此它们不保留关键顺序。
答案 1 :(得分: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
答案 2 :(得分:0)
如果您确实需要按特定顺序拥有密钥,则需要手动构建“JSON”输出,因为Python的dict
和json
模块都不支持固定密钥排序。