【问题标题】:Parsing out same part of JSON object in python在python中解析出JSON对象的相同部分
【发布时间】:2015-01-30 16:44:13
【问题描述】:

我有一个如下所示的 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]

【问题讨论】:

    标签: python json parsing


    【解决方案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"] 获取值。

    【讨论】:

    • 谢谢。不幸的是,我无法控制 JSON 输出。
    【解决方案2】:

    如您所见,在data 键下,您有一个列表,该列表由 n 个字典组成,所有字典都有 2 个键值对,因此您可以先创建一个空列表以将数据存储为 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'])
    

    【讨论】:

    • 感谢您的解释。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多