You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何更简洁地聚合按timestamp排序文档中各source的最新条目?

按来源聚合最新文档的简洁实现方式

给定一组按时间戳从新到旧排序的文档列表,需要聚合每个source对应的最新文档,有没有更简洁的实现方式?

输入示例

docs = [
   {
       "timestamp": "2022-10-11T16:00:00.000000",
       "source": "foo"
   },
   {
       "timestamp": "2022-10-10T16:00:00.000000",
       "source": "bar"
   },
   {
       "timestamp": "2022-10-09T16:00:00.000000",
       "source": "foo"
   }
]

期望输出

result = [
   {
       "timestamp": "2022-10-11T16:00:00.000000",
       "source": "foo"
   },
   {
       "timestamp": "2022-10-10T16:00:00.000000",
       "source": "bar"
   }
]

现有迭代实现

result = {}

for doc in docs:
    if doc["source"] not in result:
        result[doc["source"]] = doc

return list(result.values())

更简洁的实现方式

因为输入已经按时间戳降序排列,每个source的第一个出现项就是最新的,直接用字典推导式一行即可完成:

result = list({doc["source"]: doc for doc in docs}.values())

原理说明

字典的键具有唯一性,遍历文档时,后续同source的文档不会覆盖已存入字典的首个(最新)项,最后将字典的值转为列表就能得到目标结果。


内容的提问来源于stack exchange,提问作者maratac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 20:30:56