从Python集中弹出特定项目,如果不存在则获取默认值

问题描述 投票:0回答:1

从Python集中弹出项目或获取默认值(如果不存在)的最简单有效的方法是什么?

可以这样做:

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

并且像

一样使用
s = {'a', 'b', 'c'}
assert pop(s, 'a') == 'a'
assert s == {'b', 'c'}

assert pop(s, 'x') == None
assert s == {'b', 'c'}

但是有没有一种单行解决方案?

python set
1个回答
0
投票

这只需要对集合进行一次查找,因此效率更高。不幸的是,它长了一行。请注意,我重命名了该方法以避免与现有的

pop
方法发生冲突。

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

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

assert remove_with_default(s, 'x') == None
assert s == {'b', 'c'}
© www.soinside.com 2019 - 2024. All rights reserved.