从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'}
但是有没有一种单行解决方案?
这只需要对集合进行一次查找,因此效率更高。不幸的是,它长了一行。请注意,我重命名了该方法以避免与现有的
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'}