Lad wrote: > I have a list
A dictionary. > L={} > Now I can assign the value > L['a']=1 > and I have > L={'a': 1} > > but I would like to have a dictionary like this > L={'a': {'b':2}} > > so I would expect I can do > L['a']['b']=2 > > but it does not work. Why? D["a"]["b"] = 2 translates to D.__getitem__("a").__setitem__("b", 2) When D doesn't already contain a key/value pair D = {"a": {}} the __getitem__() call fails with a KeyError. If you don't know whether D contains a key "a", use setdefault(key, value) which inserts the value only if key is currently not in the dictionary. E. g. >>> D = {} >>> D.setdefault("a", {})["b"] = 42 >>> D.setdefault("a", {})["c"] = 24 >>> D {'a': {'c': 24, 'b': 42}} Peter -- http://mail.python.org/mailman/listinfo/python-list