dictionary of dictionaries
Marc 'BlackJack' Rintsch
bj_666 at gmx.net
Sun Dec 9 03:49:57 EST 2007
On Sun, 09 Dec 2007 00:35:18 -0800, kettle wrote:
> Hi,
> I'm wondering what the best practice is for creating an extensible
> dictionary-of-dictionaries in python?
>
> In perl I would just do something like:
>
> my %hash_of_hashes;
> for(my $i=0;$i<10;$i++){
> for(my $j=0;$j<10;$j++){
> ${$hash_of_hashes{$i}}{$j} = int(rand(10));
> }
> }
>
> but it seems to be more hassle to replicate this in python. I've
> found a couple of references around the web but they seem cumbersome.
> I'd like something compact.
Use `collections.defaultdict`:
from collections import defaultdict
from random import randint
data = defaultdict(dict)
for i in xrange(11):
for j in xrange(11):
data[i][j] = randint(0, 10)
If the keys `i` and `j` are not "independent" you might use a "flat"
dictionary with a tuple of both as keys:
data = dict(((i, j), randint(0, 10)) for i in xrange(11) for j in xrange(11))
And just for completeness: The given data in the example can be stored in a
list of lists of course:
data = [[randint(0, 10) for dummy in xrange(11)] for dummy in xrange(11)]
Ciao,
Marc 'BlackJack' Rintsch
More information about the Python-list
mailing list