如何简洁实现列表与字典元素替换,且键/索引不存在时触发报错
精简实现支持列表/字典的元素替换函数(索引/键不存在时触发报错)
需求说明:现有一个replace函数,可对列表或字典的元素进行替换操作,当目标索引或键不存在时,会捕获异常并输出错误信息。现需用更简洁的方案(优先单行实现)复现该功能,要求不能通过包装现有函数的方式实现,且必须在索引/键不存在时触发报错。
原实现代码
def replace(obj, key, value): try: obj[key] # 确保索引/键存在 obj[key] = value print(obj) except Exception as e: print(repr(e)) replace([0], 0, 1) replace({"a": 0}, "a", 1) replace([], 0, 1) replace({}, "a", 1)
原实现输出
[1] {'a': 1} IndexError('list index out of range') KeyError('a')
几种精简优化实现
感谢@Iain Shelvington提供的实现
def replace(o, k, v): try: o[k] = o[k] and False or v print(o) except Exception as e: print(repr(e))
取巧的精简实现
def replace(o, k, v): try: o[k] = v if o[k] else v print(o) except Exception as e: print(repr(e))
基于元组操作的实现
def replace(o, k, v): try: o[k], _ = v, o[k] print(o) except Exception as e: print(repr(e))
简洁的分号写法实现
def replace(o, k, v): try: o[k]; o[k] = v print(o) except Exception as e: print(repr(e))
内容的提问来源于stack exchange,提问作者Nice Zombies
相关产品推荐
相关产品推荐

