Ho Yeung Lee wrote: > I find that list can not be key in dictionary > then find tuple can be as key > > but when I add new tuple as key , got error in python 2.7 > > groupkey = {(0,0): []} > groupkey[tuple([0,3])] = groupkey[tuple([0,3])] + [[0,1]]
First try to understand that you get the same error with every non-existent key: >>> groupkey = {0: []} >>> groupkey[1] = groupkey[1] + [2] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 1 Second, it looks like you want to change a list as the value, assuming the empty list for non-existent keys. The straight-forward way to do this is: >>> pairs = [ ... ((0, 0), "foo"), ... ((0, 1), "bar"), ... ((0, 0), "baz"), ... ] >>> groups = {} >>> for k, v in pairs: ... if k in groups: ... groups[k].append(v) ... else: ... groups[k] = [v] ... >>> groups {(0, 1): ['bar'], (0, 0): ['foo', 'baz']} You can simplify this with the setdefault() method which in the example below will add an empty list for non-existent keys: >>> groups = {} >>> for k, v in pairs: groups.setdefault(k, []).append(v) ... >>> groups {(0, 1): ['bar'], (0, 0): ['foo', 'baz']} Finally there's a dedicated class for your use case: >>> from collections import defaultdict >>> groups = defaultdict(list) >>> for k, v in pairs: ... groups[k].append(v) ... >>> groups defaultdict(<class 'list'>, {(0, 1): ['bar'], (0, 0): ['foo', 'baz']}) Missing entries spring into existence automatically -- defaultdict creates the value by calling the function (list in this case) passed to the constructor. -- https://mail.python.org/mailman/listinfo/python-list