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

如何结合性别与年龄筛选条件实现Lexikon数据过滤?

解决同时按性别和年龄筛选Lexikon数据的问题

你的代码核心问题在于两次独立循环分别处理年龄和性别筛选,没有将两个条件结合;且性别筛选逻辑错误——break导致只取第一个符合性别的条目,完全没关联年龄条件。另外注意第一个字典里的GENDER值是'MΑLE'(希腊字母Α),不是英文的'MALE',这会导致性别匹配失败,需要修正。

修正后的代码

old_lexikon = [{'GENDER': 'MALE',  # 修正希腊字母Α为英文A,保证匹配正常
                'AGE': 12,
                'WEIGHT': 35,
                'HEIGHT': 1.40},
               {'GENDER': 'FEMALE',
                'AGE': 19,
                'WEIGHT': 65,
                'HEIGHT': 1.70},
               {'GENDER': 'MALE',
                'AGE': 22,
                'WEIGHT': 85,
                'HEIGHT': 1.75},
               {'GENDER': 'FEMALE',
                'AGE': 24,
                'WEIGHT': 55,
                'HEIGHT': 1.50},
               # 新增符合年龄>50的测试条目,方便验证效果
               {'GENDER': 'MALE',
                'AGE': 55,
                'WEIGHT': 75,
                'HEIGHT': 1.80}]

new_lexikon = []
valid_genders = {'MALE', 'FEMALE'}

# 输入校验,避免无效值导致错误
try:
    min_age = int(input('输入最小年龄(筛选年龄大于此值):'))
except ValueError:
    print('年龄必须输入整数!')
    exit()

gender = input('输入性别(MALE/FEMALE):').strip().upper()
if gender not in valid_genders:
    print('请输入正确的性别:MALE或FEMALE')
    exit()

# 单循环同时判断两个筛选条件
for entry in old_lexikon:
    if entry['GENDER'] == gender and entry['AGE'] > min_age:
        new_lexikon.append(entry)

print('筛选结果:')
print(new_lexikon)

关键改进点

  • 合并筛选逻辑:在同一个循环内同时检查性别匹配和年龄条件,确保只有同时满足两个要求的条目才被加入新列表。
  • 输入合法性校验:增加年龄的整数校验、性别有效值校验,避免无效输入导致程序异常。
  • 修正数据错误:修复了第一个字典中的性别拼写问题,保证匹配逻辑正常运行。
  • 逻辑明确性:根据你提出的「年龄>50」需求,将判断条件设为entry['AGE'] > min_age,若实际需求为年龄小于输入值,可将>改为<。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 15:20:29