如果我有如下输入:
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 的第一条记录。
答案 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'])]