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

从给定集合中筛选连续ID分组的最高薪资平均值组

数据处理问题

给定数据集

[ 
  (1, 'A', 100),
  (2, 'X', 200),
  (3, 'D', 300),
  (5, 'B', 300),
  (6, 'Z', 300),
  (7, 'G', 300), 
]

注:数据结构为(ID, 姓名, 薪资)

需求说明

  • 以ID为依据,选取连续ID的对象组成大小为limit=3的分组;
  • 若分组内存在缺失的ID(比如分组ID范围2、3、4中,ID=4不存在),则跳过该分组;
  • 计算每个有效分组中薪资的平均值;
  • 找出平均值最高的分组。

解决思路与实现

步骤分析

  1. 提取所有ID并建立ID到薪资的映射,同时对ID排序(保证遍历顺序正确);
  2. 遍历每个可能的起始ID,生成长度为3的连续ID范围;
  3. 检查该范围内的所有ID是否都存在于数据集中,筛选出有效分组;
  4. 对每个有效分组计算薪资平均值;
  5. 对比所有有效分组的平均值,找出数值最高的分组。

代码实现(Python)

data = [ 
  (1, 'A', 100),
  (2, 'X', 200),
  (3, 'D', 300),
  (5, 'B', 300),
  (6, 'Z', 300),
  (7, 'G', 300), 
]

# 构建ID与薪资的映射,同时获取排序后的ID列表
id_to_salary = {item[0]: item[2] for item in data}
sorted_ids = sorted(id_to_salary.keys())
limit = 3

valid_groups = []

# 遍历所有可能的起始ID
for start_id in sorted_ids:
    end_id = start_id + limit - 1
    # 检查当前连续ID范围内的所有ID是否都存在
    is_valid = all(id in id_to_salary for id in range(start_id, end_id + 1))
    if is_valid:
        # 计算该分组的薪资平均值
        group_salaries = [id_to_salary[id] for id in range(start_id, end_id + 1)]
        avg_salary = sum(group_salaries) / limit
        valid_groups.append({
            'id_range': list(range(start_id, end_id + 1)),
            'avg_salary': avg_salary,
            'salaries': group_salaries
        })

# 找出平均值最高的分组
if valid_groups:
    top_group = max(valid_groups, key=lambda x: x['avg_salary'])
    print("平均值最高的分组信息:")
    print(f"ID范围:{top_group['id_range']}")
    print(f"薪资列表:{top_group['salaries']}")
    print(f"平均薪资:{top_group['avg_salary']}")
else:
    print("不存在符合要求的有效分组")

运行结果

平均值最高的分组信息:
ID范围:[5, 6, 7]
薪资列表:[300, 300, 300]
平均薪资:300.0

解释:示例中有效分组有两个,分别是[1,2,3](平均薪资200)和[5,6,7](平均薪资300),后者平均值更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 18:05:16