1

OrderedDict同じ順序を維持しながら、通常の辞書に変換するにはどうすればよいですか?

私がこれを尋ねている理由は、API からデータを取得するときにjson.loads(str)、辞書を返すために使用する JSON 文字列を取得するためです。から返されるこの辞書はjson.loads(...)、順不同でランダムに並べられています。また、動作が遅いことを読んだOrderedDictので、元の JSON 文字列と同じ順序で通常の dict を使用したいと考えています。

json.loads(...)少し話題から外れています:を使用せずに同じ順序を維持しながら、 JSON 文字列を dict に変換する方法はありますcollections.OrderedDictか?

4

2 に答える 2

1

JSON オブジェクトと Python dict はどちらも順不同です。順序を維持するには、Python リストにマップされた JSON 配列を使用します。JSON 配列の要素は JSON オブジェクトである必要があります。これらは、Python dict の Python リストにマップされます。

パイソン 3:

from collections import OrderedDict
import json

# Preserving order in Python dict:
ordered_dict = OrderedDict([
    ('a', 1),
    ('b', 2),
    ('c', 3),
])

# Convert to JSON while preserving order:
ordered_list = [{key: val} for key, val in ordered_dict.items()]
json.dumps(ordered_list)
# '[{"a": 1}, {"b": 2}, {"c": 3}]'

Javascript (JSON):

var orderedListStr = '[{"a": 1}, {"b": 2}, {"c": 3}]';
// We will receive this array of objects with preserved order:
var orderedList = JSON.parse(orderedListStr)
于 2016-04-07T07:24:59.207 に答える