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

按列表b的元素值分组,求列表a对应索引元素的最小值

解决方案:按列表b的分组求列表a对应元素的最小值

嘿,这个需求很清晰,咱们用Python就能轻松实现,核心思路就是按b中的元素值对a的元素分组,再分别计算每组的最小值。下面结合你给出的示例一步步说明:

步骤1:准备示例数据

先把你提供的示例列表写出来:

a = [10,33,42,17,9,32,33,43,12,2,5,22]
b = [3,1,3,2,1,3,2,1,3,1,2,2]

步骤2:分组收集对应元素

我们可以用一个字典来存储分组,键是b中的可能值(1、2、3),值是a中对应位置的元素列表:

# 初始化分组字典,预设1、2、3三个分组
groups = {1: [], 2: [], 3: []}

# 同时遍历a和b的对应元素,把a的元素归入对应分组
for num_a, num_b in zip(a, b):
    groups[num_b].append(num_a)

执行完这段代码后,groups的内容会是:

{1: [33, 9, 43, 2], 2: [17, 33, 5, 22], 3: [10, 42, 32, 12]}

步骤3:计算每组的最小值

接下来对每个分组的列表调用min()函数就能得到对应最小值:

# 分别计算三个分组的最小值
min_for_1 = min(groups[1])
min_for_2 = min(groups[2])
min_for_3 = min(groups[3])

# 输出结果
print(f"b中值为1的索引对应a元素的最小值:{min_for_1}")
print(f"b中值为2的索引对应a元素的最小值:{min_for_2}")
print(f"b中值为3的索引对应a元素的最小值:{min_for_3}")

运行这段代码会输出:

b中值为1的索引对应a元素的最小值:2
b中值为2的索引对应a元素的最小值:5
b中值为3的索引对应a元素的最小值:10

优化版:用字典推导式一步生成结果

如果想更简洁,我们可以用字典推导式直接生成包含所有最小值的结果字典:

result = {key: min(vals) for key, vals in groups.items()}
print(result)  # 输出: {1: 2, 2: 5, 3: 10}

健壮性优化:处理分组为空的情况

如果b中某个值(比如1)没有出现,直接调用min()会报错。这时候可以给min()加个判断,为空时返回None或者其他默认值:

result = {key: min(vals) if vals else None for key, vals in groups.items()}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:04:39