首页 > 解决方案 > 如何在字典中找到特定值的最新条目?

问题描述

我有一个字典列表,基本上遵循这样的结构:

elements = [{'id':1, 'date':1}, {'id':1, 'date':5}, {'id':2, 'date': 6}]

我想编写一个函数id,根据date值仅保留每个副本的最新 dict :

[{'id':1, 'date':5}, {'id':2, 'date': 6}]

有没有一种有效的方法来做到这一点?到目前为止,我总是以嵌套的 for 循环和条件结束,我确信有一个 pythonic 解决方案......

标签: pythondictionary

解决方案


您不需要嵌套循环。这似乎相当简单:

elements = [{'id':1, 'date':1}, {'id':1, 'date':5}, {'id':2, 'date': 6}]
latest = {}

for ele in elements:
    if ele['id'] not in latest or ele['date'] > latest[ele['id']]['date']:
        latest[ele['id']] = ele

print(list(latest.values()))

这将输出:

[{'id': 1, 'date': 5}, {'id': 2, 'date': 6}]

推荐阅读