解析 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'])