在python中解析JSON对象的相同部分

时间:2015-01-30 16:44:13

标签: python json parsing

我有一个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]

2 个答案:

答案 0 :(得分:1)

您可以使用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"]获取值。

答案 1 :(得分:1)

正如您所看到的,在密钥data下,您有一个列表,该列表由n个字典组成,所有字典都有2个键值对,因此您可以先创建一个空列表,将数据存储为{ {1}}然后您可以将数据键下的所有词典迭代为final_list = [],然后您可以从每个词典中提取值字段并将其作为for sample_dict in seven_day_spam_data['data']附加到最终列表中。因此,结合所有这些小片段,我们得到了这段代码:

final_list.append(sample_dict['value'])