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

如何获取字典列表中各ent对应最大id值的字典条目?

解决方法

这里提供两种实用的Python实现方式:

方法一:遍历维护字典(推荐,无需预排序)

直接遍历原列表,用一个字典记录每个ent对应的最大id字典,过程中实时更新:

list1 = [{'id': 1, 'ent': 123}, {'id': 2, 'ent': 123}, {'id': 3, 'ent': 456}, {'id': 4, 'ent': 456}, {'id': 5, 'ent': 123}]

max_ent_dict = {}
for item in list1:
    ent_val = item['ent']
    # 如果当前ent还没记录,或者当前item的id更大,就更新
    if ent_val not in max_ent_dict or item['id'] > max_ent_dict[ent_val]['id']:
        max_ent_dict[ent_val] = item

# 把字典的值转成列表就是结果
result = list(max_ent_dict.values())
print(result)

运行后输出:

[{'id': 5, 'ent': 123}, {'id': 4, 'ent': 456}]

(注:Python 3.7+字典会保留插入顺序,结果顺序可能和预期略有不同,但内容完全正确;如果需要严格匹配预期顺序,可对结果再按ent或id排序)

方法二:使用itertools.groupby(需先排序)

先按ent字段对原列表排序,再用groupby分组,最后在每个组里筛选出id最大的字典:

from itertools import groupby

list1 = [{'id': 1, 'ent': 123}, {'id': 2, 'ent': 123}, {'id': 3, 'ent': 456}, {'id': 4, 'ent': 456}, {'id': 5, 'ent': 123}]

# 先按ent排序,保证groupby能正确分组
sorted_list = sorted(list1, key=lambda x: x['ent'])
result = []
for ent_val, group in groupby(sorted_list, key=lambda x: x['ent']):
    # 从分组里找出id最大的字典
    max_item = max(group, key=lambda x: x['id'])
    result.append(max_item)

print(result)

运行后输出和预期一致:

[{'id': 5, 'ent': 123}, {'id': 4, 'ent': 456}]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 18:25:35