dict initialization

MRAB python at mrabarnett.plus.com
Tue Dec 22 19:24:11 EST 2009


mattia wrote:
> Il Tue, 22 Dec 2009 23:09:04 +0100, Peter Otten ha scritto:
> 
>> mattia wrote:
>>
>>> Is there a function to initialize a dictionary? Right now I'm using:
>>> d = {x+1:[] for x in range(50)}
>>> Is there any better solution?
>> There is a dictionary variant that you don't have to initialize:
>>
>> from collections import defaultdict
>> d = defaultdict(list)
>>
>> Peter
> 
> ...and it's also the only way to do something like:
>>>> def zero():
> ...     return 0
> ...
>>>> d = defaultdict(zero)

In this case it's probably more Pythonic to do it this way:

 >>> d = defaultdict(int)

>>>> s = ['one', 'two', 'three', 'four', 'two', 'two', 'one']
>>>> for x in s:
> ...     d[x] += 1
> ...
>>>> d
> defaultdict(<function zero at 0x00BA01E0>, {'four': 1, 'three': 1, 'two': 
> 3, 'one': 2
> })




More information about the Python-list mailing list