[Python-Dev] Re: A small proposed change to dictionaries' "get" method
Guido van Rossum
guido@beopen.com
Fri, 04 Aug 2000 10:46:57 -0500
[Skip]
> eh... I don't like these do two things at once kind of methods. I see
> nothing wrong with
>
> >>> dict = {}
> >>> dict['hello'] = dict.get('hello', [])
> >>> dict['hello'].append('world')
> >>> print dict
> {'hello': ['world']}
>
> or
>
> >>> d = dict['hello'] = dict.get('hello', [])
> >>> d.insert(0, 'cruel')
> >>> print dict
> {'hello': ['cruel', 'world']}
>
> for the obsessively efficiency-minded folks.
Good! Two lines instead of three, and only two dict lookups in the
latter one.
> Also, we're talking about a method that would generally only be useful when
> dictionaries have values which were mutable objects. Irregardless of how
> useful instances and lists are, I still find that my predominant day-to-day
> use of dictionaries is with strings as keys and values. Perhaps that's just
> the nature of my work.
Must be. I have used the above two idioms many times -- a dict of
lists is pretty common. I believe that the fact that you don't need
it is the reason why you don't like it.
I believe that as long as we agree that
dict['hello'] += 1
is clearer (less strain on the reader's brain) than
dict['hello'] = dict['hello'] + 1
we might as well look for a clearer way to spell the above idiom.
My current proposal (violating my own embargo against posting proposed
names to the list :-) would be
dict.default('hello', []).append('hello')
--Guido van Rossum (home page: http://www.pythonlabs.com/~guido/)