如何简化Python中字典赋值的多条件if判断至少于4个if语句?
简化Python代码:消除重复if判断的方案
嘿,这个问题太典型了——重复的if判断不仅显得冗余,还会增加后续维护的麻烦。咱们可以用批量处理目标键的方式,彻底把if语句的数量降到0,代码也会更简洁易读!
核心思路
你需要处理的name、type、ping-status、sync-status这几个键都是一一对应的,所以可以把它们整理成一个列表,然后利用OrderedDict的构造器配合生成器表达式,一次性完成“检查键是否存在+赋值”的操作,完全不需要写多个if。
简化后的完整代码
from collections import OrderedDict # 把需要同步的键统一放在这个列表里,后续修改/新增键直接改这里 target_keys = ['name', 'type', 'ping-status', 'sync-status'] for response in response_json: # 提取appliances列表(如果想让代码更健壮,可以用.get()避免KeyError,见注释) # status_result = response.get('versanms.ApplianceStatusResult', {}) # appliances = status_result.get('appliances', []) appliances = response['versanms.ApplianceStatusResult']['appliances'] for appliance in appliances: # 一行代码完成temp_item的创建,自动跳过appliance中不存在的键 temp_item = OrderedDict( (key, appliance[key]) for key in target_keys if key in appliance ) # 这里写你后续处理temp_item的逻辑,比如添加到结果列表等
额外优化(可选)
如果你的业务允许temp_item中存在值为None的键(即当appliance里没有对应键时,temp_item仍保留该键但值为None),那可以更简洁,连最后的那个if都去掉:
temp_item = OrderedDict((key, appliance.get(key)) for key in target_keys)
这种写法的好处是:
- 彻底消除了所有重复的
if判断,代码行数大幅减少 - 可维护性提升:后续要新增或删除需要处理的键,只需要修改
target_keys列表,不用逐个调整if语句 - 逻辑更清晰:一眼就能看到需要同步的所有键
内容的提问来源于stack exchange,提问作者Wilbur Dsouza
相关产品推荐
相关产品推荐

