Check for dict key existence, and modify it in one step.

Ben Finney bignose+hates-spam at benfinney.id.au
Tue Aug 28 19:02:09 EDT 2007


rodrigo <rodrigo.cr at gmail.com> writes:

> Im using this construct a lot:
> 
> if dict.has_key(whatever):
>     dict[whatever] += delta
> else:
>     dict[whatever] = 1

I'd prefer:

    foo.setdefault(whatever, 0)
    foo[whatever] += delta

> sometimes even nested:
> 
> if dict.has_key(whatever):
>     if dict[whatever].has_key(someother):
>         dict[whatever][someother] += delta
>     else:
>         dict[whatever][someother] = 1
> else:
>     dict[whatever]={}
>     dict[whatever][someother] = 1

    foo.setdefault(whatever, {})
    foo[whatever].setdefault(someother, 0)
    foo[whatever] += delta

> there must be a more compact, readable and less redundant way to do
> this, no?

Hope that helps.

-- 
 \        "I took a course in speed waiting. Now I can wait an hour in |
  `\                              only ten minutes."  -- Steven Wright |
_o__)                                                                  |
Ben Finney



More information about the Python-list mailing list