3

我正在编写一个 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]

我尝试了几种方法,每次都得到相同的结果。

亚当

4

3 回答 3

6

唯一的解决方案是传递一个数组,或存储排序 python 端的键,并使用它访问字典。

JSON:

{
    "order": ["x", "y"],
    "d": {x: 34, y:36}
}

PYTHON:

for key in order:
    print d[key]

这将允许您以正确的顺序浏览 dict 键。

字典是哈希映射的一种形式,因此它们不保留键顺序。

于 2013-02-12T01:52:46.257 回答
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
于 2013-02-12T01:58:04.700 回答
0

如果您确实需要按特定顺序设置键,则需要手动构建“JSON”输出,因为 Pythondictjson模块都不支持固定键顺序。

于 2013-02-12T01:52:48.050 回答