trouble building data structure

Chris Angelico rosuav at
Mon Sep 29 02:20:20 CEST 2014

On Mon, Sep 29, 2014 at 10:04 AM, David Alban <extasia at> wrote:
>       file_data = {}
>       [... as i loop through lines in the file ...]
>           file_data[ md5sum ][ inode ] = { 'path' : path, 'size' : size, }
> what is the pythonic way to build my "file_data" data structure above that
> has the above structure?

The easiest way would be with a defaultdict. It's a subclass of
dictionary that does what you're looking for. You'd use it something
like this:

from collections import defaultdict
file_data = defaultdict(dict)
# then continue with the program as normal
# including the loop and assignments that you have above

Any time it's asked to look up an MD5 that doesn't exist yet, it'll
create a new dictionary by calling dict(), and that sets up the next
level for you.

Docs are here:

You can also use the setdefault() method of the regular dictionary,
which makes sense if you have just a few places where you need this


More information about the Python-list mailing list