遍历字典列表并获取最新值

时间:2021-05-21 00:22:30

标签: python

如果我有如下输入:

metadata = [{"id": 123, "timestamp": 12, "meta": "e"},
            {"id": 123, "timestamp": 24, "meta": "a"},
            {"id": 124, "timestamp": 2, "meta": "d"},
            {"id": 124, "timestamp": 1, "meta": "c"}]

我希望输出是另一个字典列表,它将按时间戳为每个 ID 提供最新记录。在这种情况下 -

[{"id": 123, "timestamp": 24, "meta": "a"}, {"id": 124, "timestamp": 2, "meta": "d"}]

我达到了可以使用 -

根据 ID 和时间戳对列表进行排序的程度
k = sorted(metadata, key=lambda x: (x['id'], x['timestamp']))

但是在此之后我被困在只选择每个 ID 的第一条记录。

1 个答案:

答案 0 :(得分:0)

没有pandas

from itertools import groupby

k = sorted(metadata, key=lambda x: (x['id'], x['timestamp']))
result = [list(g)[-1] for k, g in groupby(k, key=lambda x: x['id'])]