dict.get(key, default) evaluates default even if key exists

Chris Angelico rosuav at gmail.com
Wed Dec 16 06:26:52 EST 2020


On Wed, Dec 16, 2020 at 10:17 PM Peter J. Holzer <hjp-python at hjp.at> wrote:
>
> On 2020-12-15 13:07:25 -0800, Ethan Furman wrote:
> > On 12/15/20 9:07 AM, Mark Polesky via Python-list wrote:
> >
> > > D = {'a':1}
> > >
> > > def get_default():
> > >      print('Nobody expects this')
> > >      return 0
> > >
> > > print(D.get('a', get_default()))
> >
> > Python has short-circuiting logical operations, so one way to get the behavior you're looking for is:
> >
> >     D.get('a') or get_default()
>
> That will call get_default for any falsey value (0, "", an empty list ...),
> not just for missing values.
>
> Which may or may not be what the OP wants.
>

D['a'] if 'a' in D else get_default()

ChrisA


More information about the Python-list mailing list