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

基于最低整数值筛选重复元组列表中的员工数据

解决每个雇主保留最低得分员工条目的问题

我来给你一个实用的Python解决方案,帮你从重复的元组数据集中,为每个雇主筛选出得分最低的员工条目:

思路拆解

  • 先确定每个雇主的最低得分:遍历数据集,按雇主分组记录对应的最低得分(注意要把字符串类型的得分转成整数再比较)。
  • 筛选符合条件的条目:再次遍历数据集,只保留那些得分等于对应雇主最低分的条目。
  • 可选:去重处理:因为原数据有大量重复,如果你需要唯一的条目,可以用有序字典来去重(还能保留原数据顺序)。

完整代码实现

dataset = [ ('Employer 1', 'Video Editor', '2018-05-08 10:22:31', 'Dataset1', 'John Smith', '2'), 
            ('Employer 1', 'Video Editor', '2018-05-08 10:22:31', 'Dataset2', 'Allan Smith', '1'), 
            ('Employer 1', 'Video Editor', '2018-05-08 10:22:31', 'Dataset3', 'John Smith', '2'), 
            ('Employer 1', 'Video Editor', '2018-05-08 10:22:31', 'Dataset2', 'Allan Smith', '1'), 
            ('Employer 1', 'Video Editor', '2018-05-08 10:22:31', 'Dataset1', 'John Smith', '2'), 
            ('Employer 1', 'Video Editor', '2018-05-08 10:22:31', 'Dataset3', 'Allan Smith', '1'), 
            ('Employer 2', 'Cook', '2018-05-08 10:22:31', 'Dataset1', 'james bond', '3'), 
            ('Employer 2', 'Cook', '2018-05-08 10:22:31', 'Dataset1', 'james bond', '3'), 
            ('Employer 2', 'Cook', '2018-05-08 10:22:31', 'Dataset1', 'james brown', '1'), 
            ('Employer 2', 'Cook', '2018-05-08 10:22:31', 'Dataset1', 'james brown', '1'), 
            ('Employer 3', 'Cook', '2018-05-08 10:22:31', 'Dataset1', 'james brown', '1'), 
            ('Employer 3', 'Cook', '2018-05-08 10:22:31', 'Dataset1', 'james brown', '1')]

# 1. 计算每个雇主的最低得分
employer_min_scores = {}
for entry in dataset:
    employer_name = entry[0]
    current_score = int(entry[5])  # 转成整数才能正确比较大小
    # 如果雇主不在字典里,或者当前得分比已记录的更低,就更新
    if employer_name not in employer_min_scores or current_score < employer_min_scores[employer_name]:
        employer_min_scores[employer_name] = current_score

# 2. 筛选出得分等于雇主最低分的所有条目
filtered_entries = [entry for entry in dataset if int(entry[5]) == employer_min_scores[entry[0]]]

# 3. 可选:去重并保持原顺序(Python 3.7+可用)
unique_filtered_entries = list(dict.fromkeys(filtered_entries))

# 输出结果
print("筛选后(保留重复条目):")
for item in filtered_entries:
    print(item)

print("\n去重且保留原顺序的结果:")
for item in unique_filtered_entries:
    print(item)

代码说明

  • 步骤1:通过字典employer_min_scores存储每个雇主的最低得分,为后续筛选提供明确的判断标准。
  • 步骤2:用列表推导式快速筛选,只保留符合最低分要求的条目,逻辑清晰且执行高效。
  • 步骤3:使用dict.fromkeys()来去重,既能去除重复的元组,又能保持原数据的顺序(Python 3.7及以上版本支持字典插入顺序保留)。如果不需要保持顺序,直接用list(set(filtered_entries))更简单。

运行这段代码后,你会得到:

  • Employer 1只保留Allan Smith(得分1)的所有条目;
  • Employer 2只保留james brown(得分1)的所有条目;
  • Employer 3因为所有条目得分都是1,所以全部保留(或去重后保留唯一条目)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:46:34