Does this work for you?
key, *value = item.split("=", 1)
if value:
value = value[0]
else:
value = None key, *value = item.split("=", 1)
if value:
value = value[0]
else:
value = None key, value ?= item.split("=", 1)
Modulo bike shedding over the actual syntax, of course.(Edit: the semantics of this could be even more generic, like Ruby's `[...] rescue value` syntax for turning any raised exception into a default value instead.)
value = value[0] if value else None