我有一个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]
答案 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'])