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

Python通过键值对列表生成字典时保留重复键对应最大值

重复键生成字典保留最大值的实现方法

你可以通过以下几种方式实现需求,按适用场景排序:

1. 基础循环实现(推荐,无额外依赖)

直接遍历键值对,逐次判断更新字典,时间复杂度O(n),效率最高:

L1 = ['a','b','b','d']
L2 = [1,3,2,4]
d = {}
for k, v in zip(L1, L2):
    # 键不存在 或 当前值大于已有值时更新
    if k not in d or v > d[k]:
        d[k] = v
print(d) # 输出 {'a': 1, 'b': 3, 'd': 4}

2. defaultdict 缓存所有值后取最大值

如果后续还需要使用同一键的所有取值,可以用这种方法:

from collections import defaultdict

L1 = ['a','b','b','d']
L2 = [1,3,2,4]
temp_dict = defaultdict(list)
for k, v in zip(L1, L2):
    temp_dict[k].append(v)
# 遍历临时字典取每个值列表的最大值
d = {k: max(val_list) for k, val_list in temp_dict.items()}
print(d) # 输出 {'a': 1, 'b': 3, 'd': 4}

3. groupby 函数式实现

适合偏好函数式写法的场景,因为需要先排序,时间复杂度O(nlogn),数据量大时效率低于基础循环:

from itertools import groupby

L1 = ['a','b','b','d']
L2 = [1,3,2,4]
# 先按键排序,再分组取每组最大值
d = {
    k: max(v for _, v in group) 
    for k, group in groupby(sorted(zip(L1, L2)), key=lambda x: x[0])
}
print(d) # 输出 {'a': 1, 'b': 3, 'd': 4}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:15:04