2017-08-26 64 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'}