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

基于含重复键的列表创建字典:保留重复键的最小对应值

用两个列表创建字典并保留重复键的最小对应值

问题描述

现有两个列表:[1, 2, 2, 3](作为键)和[3, 4, 5, 6](作为对应值),需要创建一个字典,当键重复时,保留该键对应的最小数值,预期输出为:{1: 3, 2: 4, 3: 6}


解决方案1:循环遍历处理(最直观)

直接遍历配对的键值对,逐个判断并更新字典:

keys = [1, 2, 2, 3]
values = [3, 4, 5, 6]

result_dict = {}
for key, val in zip(keys, values):
    # 如果键不存在,或者当前值比字典中已存的更小,则更新
    if key not in result_dict or val < result_dict[key]:
        result_dict[key] = val

print(result_dict)

运行后输出:{1: 3, 2: 4, 3: 6}


解决方案2:结合分组与最小值计算

利用itertools.groupby先按键分组,再取每组的最小值,需要先对键值对按键排序(groupby仅对连续相同元素分组):

from itertools import groupby
from operator import itemgetter

keys = [1, 2, 2, 3]
values = [3, 4, 5, 6]

# 先将键值对按键排序,确保相同键连续
sorted_pairs = sorted(zip(keys, values), key=itemgetter(0))
# 按键分组,每组取值的最小值
result_dict = {k: min(v for _, v in group) for k, group in groupby(sorted_pairs, key=itemgetter(0))}

print(result_dict)

运行后输出同样符合预期。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 22:17:06