I've been wrestling with dicts. I hope at the very least what I discovered helps someone else out, but I'm interested in hearing from more learned python users.
I found out that adding a two dimensional element without defining first dimension existing doesn't work: >>> data = {} >>> data['one']['two'] = 'three' Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'one' >>> data['one'] = {} >>> data['one']['two'] = 'three' >>> print data {'one': {'two': 'three'}} And through some research, I discovered collections.defaultdict (new in Python 2.5, FWIW): >>> import collections >>> data = collections.defaultdict(dict) >>> data['one']['two'] = 'three' >>> print data defaultdict(<type 'dict'>, {'one': {'two': 'three'}}) Why isn't the behavior of collections.defaultdict the default for a dict? Am I just revelling in my bad perl habits by not wanting to declare a previous level first? Is this sort of "more rigid" way of doing things common throughout python, and is it best that I not fight it, but embrace it? Your thoughts and comments are very much appreciated. I think my brain already knows some of the answers, but my heart ... well, perl and I go way back. Loving python so far, though. Pete -- http://mail.python.org/mailman/listinfo/python-list