2017-08-26 22 views
0

jsonのデータをpythonの変数に簡単に保存する方法はありますか?私は変数全体にjsonを意味するのではなく、それを解析してキー値として格納します。例えばPythonでjsonデータを保存する

- これは私が、私は簡単にデータにアクセスするためのリストまたはPythonでいくつかの他のデータ型を持つようにしたいjsonファイル

[ 
    [ 
     1, 
     "Apple" 
    ], 
    [ 
     2, 
     "Orange" 
    ], 
    [ 
     3, 
     "Grapes" 
    ], 
    [ 
     4, 
     "Banana" 
    ], 
    [ 
     5, 
     "Mango" 
    ] 
] 

ある場合。 variable[1]よう

何かがアップルを印刷する必要がありますので、当然のことながら

答えて

3

に、あなたはjsonモジュールを必要としています。

In [29]: import json 

In [30]: data = '''[ 
    ...: [ 
    ...:  1, 
    ...:  "Apple" 
    ...: ], 
    ...: [ 
    ...:  2, 
    ...:  "Orange" 
    ...: ], 
    ...: [ 
    ...:  3, 
    ...:  "Grapes" 
    ...: ], 
    ...: [ 
    ...:  4, 
    ...:  "Banana" 
    ...: ], 
    ...: [ 
    ...:  5, 
    ...:  "Mango" 
    ...: ] 
    ...: ]''' 

In [31]: json.loads(data) 
Out[31]: [[1, 'Apple'], [2, 'Orange'], [3, 'Grapes'], [4, 'Banana'], [5, 'Mango']] 

このモジュールには、ファイル内のデータを処理する機能も含まれています。

数字キーでフルーツ名を抽出するにはいくつかの方法がありますが、すべてデータをさらに変換する必要があります。例:ここでは

In [32]: fruits = [] 

In [33]: for key, name in json.loads(data): 
    ...:  fruits.append(name) 
    ...: 

In [34]: fruits[0] 
Out[34]: 'Apple' 

Pythonのゼロベースのインデックスは、少しのキーが1で始まる辞書はあなたが必要な正確に何を与えることを与えられたこのソリューションの価値を破ります。ペアのリストを使用してdictコンストラクターを呼び出すと、それをキー、値のペアとして扱います。

In [35]: fruits = dict(json.loads(data)) 

In [36]: fruits[1] 
Out[36]: 'Apple' 
4

はい。 jsonモジュールを使用できます。具体的にはjson.loads。ただし、データ間のキー値の関連付けも必要な場合は、辞書を使用する必要があります。

from json import loads 

json_data = \ 
""" 
[ 
    [1, "Apple"], 
    [2, "Orange"], 
    [3, "Grapes"], 
    [4, "Banana"], 
    [5, "Mango"] 
] 
""" 

data = dict(loads(json_data)) 
print(data) 
# {1: u'Apple', 2: u'Orange', 3: u'Grapes', 4: u'Banana', 5: u'Mango'} 
関連する問題