On Sun, Nov 20, 2016 at 11:19 PM, Thorsten Kampe <thors...@thorstenkampe.de> wrote: > The whole point of my posting was non hashable keys (like lists): > > ``` >>>> dictitem > [([1], '11'), ([2], '22'), ([4], '33'), ([3], '44')] >>>> dict(dictitem) > --------------------------------------------------------------------- > TypeError Traceback (most recent call last) > <ipython-input-12-0f2b626ac851> in <module>() > ----> 1 dict(dictitem) > > TypeError: unhashable type: 'list' > ```
I see. So you want to be able to have something that looks and feels like a dictionary, but uses a different way of looking things up. Makes reasonable sense, on the surface. Before you go down that route, I strongly recommend reading up on exactly *why* a dictionary has the requirement of hashability, and what the consequences are of trying to look things up using lists as keys. You can easily experiment with it like this: class HashableList(list): def __hash__(self): return hash(tuple(self)) Use those in your dict, rather than vanilla lists. Then you can mess around with the consequences of mutable dict keys. Alternatively, switch from using lists to using tuples. They're hashable and immutable, thus avoiding the problems. If what you're trying to do is use multi-part dict keys, a tuple is far and away the best solution. ChrisA -- https://mail.python.org/mailman/listinfo/python-list