Python:如何更优雅地检查字典中的备选键以获取目标值?
更优实现方案
可以用以下几种更简洁的方式替代嵌套try-except:
1. 遍历候选键列表
逐个检查候选键是否存在于字典中,找到第一个匹配的键就取值,逻辑清晰且易扩展(后续加新键只需修改列表):
candidate_keys = ["value", "_value", "amount", "_amount"] val = None for key in candidate_keys: if key in myDict: val = myDict[key] break # 若所有键都不存在,val保持None,可根据需求设置默认值
2. 使用dict.get()链式调用
利用get()方法的默认值特性,依次尝试取值,代码更紧凑,但要注意:如果目标值本身是0、False、""这类假值,会被后续的get()覆盖,仅适用于目标值为真的场景:
val = myDict.get("value") or myDict.get("_value") or myDict.get("amount") or myDict.get("_amount")
3. 结合next()与生成器表达式
这是最简洁的写法,生成器会遍历候选键并返回第一个存在的键对应的值,还能指定默认值避免无匹配时抛出异常:
candidate_keys = ["value", "_value", "amount", "_amount"] # 无匹配时返回None,可替换为你需要的默认值 val = next((myDict[key] for key in candidate_keys if key in myDict), None)
这几种方案都比嵌套try-except更易读、易维护,其中遍历列表和生成器的方式适用性更广,不会受目标值真假的影响。
内容的提问来源于stack exchange,提问作者desired login
相关产品推荐
相关产品推荐

