如何基于JSON文件阈值过滤字典列表并生成指定输出
问题解决:根据年龄阈值过滤人员数据
需求说明
- 输入人员数据:
output = [{'name' : 'andres', 'age': 10}, {'name' : 'paul', 'age' :20}] - 阈值配置JSON结构:
{"NAMES":['andres', 'paul'], "THRESHOLD":{'andres':14, 'paul': 16}} - 预期输出:
- 符合条件的姓名-年龄字典:
{'paul':20} - 符合条件的姓名列表:
['paul']
- 符合条件的姓名-年龄字典:
原代码问题
原代码存在多处错误:
- 键名拼写错误:
THESHOLD应为THRESHOLD,且字符串未正确闭合(缺少右引号) - 列表推导式语法混乱,逻辑不清晰,未正确遍历人员数据并判断条件
修正后的代码实现
先确保已通过json.load()将配置文件加载到json_data变量中,以下是完整实现:
import json # 模拟加载JSON配置文件 json_data = {"NAMES":['andres', 'paul'], "THRESHOLD":{'andres':14, 'paul': 16}} # 输入的人员数据列表 output = [{'name' : 'andres', 'age': 10}, {'name' : 'paul', 'age' :20}] # 提取阈值字典 thresholds = json_data['THRESHOLD'] # 生成符合条件的姓名-年龄字典 filtered_dict = {} for person in output: name = person['name'] age = person['age'] if name in thresholds and age >= thresholds[name]: filtered_dict[name] = age # 生成符合条件的姓名列表 filtered_list = [p['name'] for p in output if p['name'] in thresholds and p['age'] >= thresholds[p['name']]] # 输出结果 print("姓名-年龄字典:", filtered_dict) print("姓名列表:", filtered_list)
运行结果
姓名-年龄字典: {'paul': 20} 姓名列表: ['paul']
内容的提问来源于stack exchange,提问作者math_guy_shy
相关产品推荐
相关产品推荐

