如何结合性别与年龄筛选条件实现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
相关产品推荐
相关产品推荐

