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

如何用更简洁高效的方式从Python集合弹出指定元素并返回默认值?

问题

有没有简单的方法(最好是一行代码)实现从Python集合中弹出指定元素,且当元素不存在时返回默认值?目前可通过四行代码、两次哈希表查找实现该功能:

def pop_default(coll: set, v, default=None):
    if v not in coll:
        return default
    coll.remove(v)
    return v

能否重写该函数,满足以下要求:

  • 更紧凑,最好是一行代码;
  • 效率至少不低于原实现?

函数使用示例

s = {'a', 'b', 'c'}
assert pop_default(s, 'a') == 'a'
assert s == {'b', 'c'}

assert pop_default(s, 'x') == None
assert s == {'b', 'c'}
解决方案

@jonrsharpe 和 @TimurShtatland 提出了两种优化方案:

一行代码实现

def pop_default(s: set, v, default=None):
    return s.remove(v) or v if v in s else default

这是最优方案,效率与原实现相同,且仅需一行代码。

特殊场景替代方案:基于异常处理

def pop_default(coll: set, v, default=None):
    try:
        coll.remove(v)
        return v
    except KeyError:
        return default

在@nocomment的测试中,该方案在触发异常时比原实现慢约5倍,但在不触发异常时速度更快。


内容的提问来源于stack exchange,提问作者makukha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 03:33:15