首页 > 解决方案 > 在python中使用条件解析json

问题描述

你能给我一些关于从 Python3 中的某些条件的字典列表中解析列表的建议吗?

从下面的 json 列表中,我想提取每个“id”的最大时间戳。

所以我想要的最终输出就像

[{
    "id": 1,
    "value": {
        "val1": 400000000,
        "val2": 750000000
    },
    "timestamp": 1600957822.2510917
},
{
    "id": 2,
    "value": {
        "val1": 400000000,
        "val2": 750000000
    },
    "timestamp": 1600958083.618805
}]

我有什么办法吗?提前致谢

[
{
    "id": 1,
    "value": {
        "val1": 400000000,
        "val2": 750000000
    },
    "timestamp": 1600957822.2510917
},
{
    "id": 2,
    "value": {
        "val1": 400000000,
        "val2": 750000000
    },
    "timestamp": 1600957857.3018847
},
{
    "id": 2,
    "value": {
        "val1": 400000000,
        "val2": 750000000
    },
    "timestamp": 1600958027.4114041
},
{
    "id": 2,
    "value": {
        "val1": 400000000,
        "val2": 750000000
    },
    "timestamp": 1600958083.618805
}]

标签: pythonjson

解决方案


如果它是字典列表(如评论中所示),这是一种解析它并检索最终字典列表的方法:

result = {}
for obj in dict_list:
    if obj['id'] in result:
        if result[obj['id']]['timestamp'] < obj['timestamp']:
            result[obj['id']]['timestamp'] = obj['timestamp']
    else:
        result[obj['id']] = obj
[x for x in result.values()]

推荐阅读