有没有办法轻松地将json
数据存储在python中的变量中。我并不是指变量中的整个json
,而是将其解析并存储为键值。
例如 - 如果这是json
文件
[
[
1,
"Apple"
],
[
2,
"Orange"
],
[
3,
"Grapes"
],
[
4,
"Banana"
],
[
5,
"Mango"
]
]
我希望在python中有一个列表或其他数据类型,通过它我可以轻松访问数据。
像variable[1]
这样的东西应该打印Apple等等
答案 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'