解析 python 中 JSON 对象的相同部分
Parsing out same part of JSON object in python
我有一个 JSON 对象,如下所示:
{u'data': [{u'time': 1422000000, u'value': u'3.4622110423016'},
{u'time': 1422086400, u'value': u'2.2860814710007'},
{u'time': 1422172800, u'value': u'3.2759128386337'},
{u'time': 1422259200, u'value': u'3.1275526348711'},
{u'time': 1422345600, u'value': u'5.0558305332819'},
{u'time': 1422432000, u'value': u'3.6486900025894'},
{u'time': 1422518400, u'value': u'5.1073740942857'}]}
如何将所有值解析为一个列表?我尝试了以下方法,但均无效:
seven_day_spam_data["data"][0]["value"][:]
seven_day_spam_data["data"][0]["value"][0:7]
我希望列表如下所示:
[3.4622110423016,
2.2860814710007,
3.2759128386337,
3.1275526348711,
5.0558305332819,
3.6486900025894,
5.1073740942857]
您可以使用 list comprehension:
out = [d["value"] for d in seven_day_spam_data["data"]]
您的方法不起作用的原因是 seven_day_spam_data["data"][0]
不对应于您所有值的列表,它仅对应于 "data": [...]
中七个字典中的第一个(表示为[0]
在你的代码中)。要从每个字典中获取 "value"
的值,您需要遍历字典,这是列表理解所做的。
如果您可以控制 JSON 数据,您可以考虑以更简单的方式存储它。例如:
data = {
"time": [1, 2, 3],
"values": [3.2, 3.4, 3.3]
}
然后您可以使用 data["values"]
.
获取值
可以看到在键data
下有一个列表,列表由n个字典组成,每个字典都有2个键值对,所以你可以先创建一个空列表来存储数据as final_list = []
然后你可以迭代数据键下的所有字典作为 for sample_dict in seven_day_spam_data['data']
然后你可以从每个字典中提取值字段并将它附加到最终列表作为 final_list.append(sample_dict['value'])
。所以结合所有这些小片段我们得到这个代码:
final_list = []
for sample_dict in seven_day_spam_data['data']:
final_list.append(sample_dict['value'])
我有一个 JSON 对象,如下所示:
{u'data': [{u'time': 1422000000, u'value': u'3.4622110423016'},
{u'time': 1422086400, u'value': u'2.2860814710007'},
{u'time': 1422172800, u'value': u'3.2759128386337'},
{u'time': 1422259200, u'value': u'3.1275526348711'},
{u'time': 1422345600, u'value': u'5.0558305332819'},
{u'time': 1422432000, u'value': u'3.6486900025894'},
{u'time': 1422518400, u'value': u'5.1073740942857'}]}
如何将所有值解析为一个列表?我尝试了以下方法,但均无效:
seven_day_spam_data["data"][0]["value"][:]
seven_day_spam_data["data"][0]["value"][0:7]
我希望列表如下所示:
[3.4622110423016,
2.2860814710007,
3.2759128386337,
3.1275526348711,
5.0558305332819,
3.6486900025894,
5.1073740942857]
您可以使用 list comprehension:
out = [d["value"] for d in seven_day_spam_data["data"]]
您的方法不起作用的原因是 seven_day_spam_data["data"][0]
不对应于您所有值的列表,它仅对应于 "data": [...]
中七个字典中的第一个(表示为[0]
在你的代码中)。要从每个字典中获取 "value"
的值,您需要遍历字典,这是列表理解所做的。
如果您可以控制 JSON 数据,您可以考虑以更简单的方式存储它。例如:
data = {
"time": [1, 2, 3],
"values": [3.2, 3.4, 3.3]
}
然后您可以使用 data["values"]
.
可以看到在键data
下有一个列表,列表由n个字典组成,每个字典都有2个键值对,所以你可以先创建一个空列表来存储数据as final_list = []
然后你可以迭代数据键下的所有字典作为 for sample_dict in seven_day_spam_data['data']
然后你可以从每个字典中提取值字段并将它附加到最终列表作为 final_list.append(sample_dict['value'])
。所以结合所有这些小片段我们得到这个代码:
final_list = []
for sample_dict in seven_day_spam_data['data']:
final_list.append(sample_dict['value'])