2017-08-26 67 views
0

有沒有方法可以方便地將json數據存儲在python中的變量中。我不是指整個變量中的json,而是將它解析並存儲爲鍵值。在python中存儲json數據

例如 - 如果這是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'}