Yes, weirdly missing.
Also omitted:
my_dict.get('existing_key', foo())
does not short-circuits foo(). That always felt like a bug to me.Also omitted:
my_dict.get('existing_key', foo())
does not short-circuits foo(). That always felt like a bug to me. my_dict['existing_key'] if 'existing_key' in my_dict else foo()
You could also define a `get_lazy` method that does the above, taking a nullary function as its key and evaluating it if the key is missing. But then you would need to wrap your default values in a lambda, which would look absurd for the common use case of calling `get` with some constant default value. Seems unnecessary when the ternary operator works fine. my_dict.get('existing_key') or foo()
This would also easily let you do multiple alternations (much more annoying with the ternary operator). print(player_data['score'] or 'does not exist')
This will print "does not exist" when the score is zero.