You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何简洁实现列表与字典元素替换,且键/索引不存在时触发报错

精简实现支持列表/字典的元素替换函数(索引/键不存在时触发报错)

需求说明:现有一个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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 01:35:22