Hello, > Here is my problem: > I have a list that looks like this - > [['a', '13'], ['a', '3'], ['b', '6'], ['c', '12'], ['c', '15'], ['c', > '4'], ['d', '2'], ['e', '11'], ['e', '5'], ['e', '16'], ['e', '7']] > > and I would like to end up with something like this, i.e. with the > only one list per letter: > > [['a', ['13' '3']], ['b', '6'], ['c', ['12', '15', '4']], ['d', '2'], > ['e', ['11', '5', '16', '7']]] I'd use a dictionary to store value for a given key: >>> def aggregate(lst): items = {} # key -> values for key, value in lst: values = items.get(key) if values: if type(values) == list: values.append(value) else: items[key] = [values, value] else: items[key] = value return [list(pair) for pair in items.items()]
>>> aggregate(lst) [['a', ['13', '3']], ['c', ['12', '15', '4']], ['b', '6'], ['e', ['11', '5', '16', '7']], ['d', '2']] >>> HTH, -- Miki <[EMAIL PROTECTED]> http://pythonwise.blogspot.com -- http://mail.python.org/mailman/listinfo/python-list