3

Python リスト内の json オブジェクトの正しい順序で json ファイルを期待する Web アプリケーションを作成しています。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 側の順序を格納し、それを使用して dict にアクセスすることです。

JSON:

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

パイソン:

for key in order:
    print d[key]

これにより、辞書キーを適切な順序で調べることができます。

辞書はハッシュ マップの形式であるため、キーの順序は保持されません。

于 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 に答える