Python如何更简洁智能地改写该条件判断语句(规避len(list)==0写法)?
问题翻译及解法
问题(翻译后)
我需要检查count值:当键B对应的列表中不存在count时显示777,否则显示实际count值(当前案例中无count,应显示777)。请问是否有更简洁智能的方式改写以下if else语句?且不希望使用if len(list)==0的写法。
原代码示例:
results = [{'A': [{'_id': {}, 'count': 256}], 'B': []}] if not results[0]['B']: updated_events = 777 else: updated_events = results[0]['B'][0]['count'] print(updated_events)
简洁改写方案
方案1:三元运算符(最直观简化)
直接将原if-else逻辑压缩为一行,逻辑与原代码完全一致,同时避开len()判断:
results = [{'A': [{'_id': {}, 'count': 256}], 'B': []}] updated_events = results[0]['B'][0]['count'] if results[0]['B'] else 777 print(updated_events) # 输出777
方案2:使用next()函数(更灵活健壮)
如果后续需要处理B列表含多个元素、或提取第一个含count的元素等场景,next()结合生成器表达式的适配性更强,且天然处理空列表情况:
results = [{'A': [{'_id': {}, 'count': 256}], 'B': []}] # 遍历B列表取第一个元素的count,空列表则返回777 updated_events = next((item['count'] for item in results[0]['B']), 777) print(updated_events) # 输出777
这种写法的优势在于,即使B列表有多个元素,也只会取第一个元素的count;若后续需求调整为“找到第一个包含count键的元素”,仅需修改生成器表达式即可,扩展性更好。
内容的提问来源于stack exchange,提问作者maria bandoria
相关产品推荐
相关产品推荐

