Это можно сделать за четыре строк кода и два поиска в хэш-таблице:
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'}
Подробнее здесь: https://stackoverflow.com/questions/789 ... not-exists