Python dict排序

aeu*_*ere 3 python dictionary

我正在编写一个Web应用程序,它期望一个json文件在python列表中具有正确的json对象排序.它应该按x,y排序,但无论我尝试什么,值总是返回y,x.

list: [{'y': 0.0, 'x': 1360633172168}, {'y': 0.0, 'x': 1360633172168}, ...
Run Code Online (Sandbox Code Playgroud)

在将值写入控制台之前,任何人都可以了解如何重新排序这些内容吗?

        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]
Run Code Online (Sandbox Code Playgroud)

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

亚当

den*_*mat 6

唯一的解决方案是传递一个数组,或者存储命令python一侧的键,这些键被排序并使用它来访问dict.

JSON:

{
    "order": ["x", "y"],
    "d": {x: 34, y:36}
}
Run Code Online (Sandbox Code Playgroud)

蟒蛇:

for key in order:
    print d[key]
Run Code Online (Sandbox Code Playgroud)

这将允许您按正确的顺序浏览dict键.

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


ins*_*get 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
Run Code Online (Sandbox Code Playgroud)

  • 这在这里没有用,因为首先没有秩序要保留. (2认同)