在python中存储json数据

时间:2017-08-26 18:38:03

标签: python json

有没有办法轻松地将json数据存储在python中的变量中。我并不是指变量中的整个json,而是将其解析并存储为键值。

例如 - 如果这是json文件

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

我希望在python中有一个列表或其他数据类型,通过它我可以轻松访问数据。

variable[1]这样的东西应该打印Apple等等

2 个答案:

答案 0 :(得分: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'}

答案 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'