Python如何从嵌套字典提取类查询结果 筛选销售额超5万员工
提取嵌套员工字典中销售额超50000的信息实现方案
你存储的Sales字段是字符串格式,直接做数值比较会触发字符串比对逻辑,得到错误结果,比较前必须先转为数值类型。
基础遍历实现(可读性最高)
直接遍历Employee键下的所有员工条目,逐行做判断筛选:
emp_details = { 'Employee': { 'jim': {'ID':'001', 'Sales':'75000', 'Title': 'Lead'}, 'eva': {'ID':'002', 'Sales': '50000', 'Title': 'Associate'}, 'tony': {'ID':'003', 'Sales': '150000', 'Title': 'Manager'} } } # 存储符合条件的员工 result = {} for emp_name, emp_data in emp_details['Employee'].items(): # 销售额转整数后比较 if int(emp_data['Sales']) > 50000: result[emp_name] = emp_data print(result)
运行输出:
{'jim': {'ID': '001', 'Sales': '75000', 'Title': 'Lead'}, 'tony': {'ID': '003', 'Sales': '150000', 'Title': 'Manager'}}
简洁字典推导式实现
如果想要更精简的代码,可以直接用字典推导式完成筛选:
result = { name: data for name, data in emp_details['Employee'].items() if int(data['Sales']) > 50000 }
补充说明
- 如果你的销售额可能存在小数(比如75000.5),把类型转换的
int()替换为float()即可 - 如果需要把销售额等于50000的员工也纳入结果,把比较运算符
>替换为>=即可,当前样例中eva的销售额刚好为50000,默认不会被筛选出来
内容的提问来源于stack exchange,提问作者Tony R
相关产品推荐
相关产品推荐

