2017-01-18 13 views
-1

なぜこれが起こりますか? Pythonで。私はそれを読んで保存しています。 JSONの保存方法を制御する方法はありますか?私は 'utf-8'しか知りません。あなたはファイルを読み書きするべきです。dictを正しい順序でJSONに保存すると失敗します

これは私が得るものです:

{ 
    "results": [ 
     { 
      "result": { 
       "2": 66, 
       "0": 22, 
       "1": 34 
      }, 
      "name": "Amanda" 
     } 
    ] 
} 

これは私が欲しいものです:

{ 
    "results": [ 
     { 
      "name": "Amanda", 
      "result": { 
       "0": 22, 
       "1": 34, 
       "2": 66 
      } 
     } 
    ] 
} 
+0

あなたはいくつかの要素を削除したいですか?両方の例の間に見られる唯一の違いは、PatrikとOscarのエントリがないことです。 – Sirko

+2

これは私が見た中で最も理解できない質問です。おそらく私はASCIIしか知りません。 –

+0

いいえ。私は多くのページを埋めることを避けるために、他を除外しました。それを編集して明確にしましょう。 – haxxir411

答えて

0

まあ、それはすべてでした:sort_keys=True, separators=(',', ':')

+1

これは良いですが、あなたの答えを強化する必要があります、それは少し簡潔です。 –

1

は、ここで私はどうなるのかです:

  • 反復元経由辞書
  • 各サブ辞書をOrderedDictに変換し、そのリストを作成してnameresultの前にあるように並べ替えます(これは必要な順序であれば、それ以外の方法でキーを注文するか、ハードコードすることができます)
  • は、注文した辞書
  • のリストと構造をダンプ

私のコードは、(jdはあなたの構造体である):

from collections import OrderedDict 

ordered_list = [] 
for x in jd["results"]: 
    ordered = OrderedDict() 
    for k,v in sorted(x.items()): 
     ordered[k] = v 
    ordered_list.append(ordered) 

print(json.dumps({"results" : ordered_list})) 

結果:

{"results": [{"name": "Amanda", "result": {"0": 22, "2": 66, "1": 34}}]} 
+0

Thxはこれのためにたくさんあります。 – haxxir411

+0

これは他の名前で追加した他の結果を注文しないのはなぜですか? – haxxir411

関連する問題