On Feb 2, 1:55 pm, "ardief" <[EMAIL PROTECTED]> wrote: > Hi everyone > 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 have the feeling it's trivial, and I've scoured the group archives - > sets might be a possibility, but I'm not sure how to operate on a list > of lists with sets. > > This function also gives me what I want, more or less, but I don't > know how to make it run until it's covered all the possibilities, if > that makes sense... > > def sigh(list): > for a in list: > i = list.index(a) > if a != list[-1]: ##if a is not the last one, i.e. there > is a > next one > n = alist[i+1] > if a[0] == n[0]: > a.append(n[1:]) > del alist[i+1] > > Sorry about the lengthy message and thanks for your suggestions - I'm > trying to learn...
: python Python 2.5 (r25:51908, Nov 28 2006, 16:10:01) [GCC 3.4.3 (TWW)] on sunos5 Type "help", "copyright", "credits" or "license" for more information. >>> from pprint import pprint as pp >>> from collections import defaultdict >>> data = [['a', '13'], ['a', '3'], ['b', '6'], ['c', '12'], ['c', '15'], >>> ['c', '4'], ['d', '2'], ['e', '11'], ['e', '5'], ['e', '16'], ['e', '7']] >>> d = defaultdict(list) >>> _ = [d[x0].append(x1) for x0,x1 in data] >>> pp(d) defaultdict(<type 'list'>, {'a': ['13', '3'], 'c': ['12', '15', '4'], 'b': ['6'], 'e': ['11', '5', '16', '7'], 'd': ['2']}) >>> pp(sorted(d.items())) [('a', ['13', '3']), ('b', ['6']), ('c', ['12', '15', '4']), ('d', ['2']), ('e', ['11', '5', '16', '7'])] >>> - Paddy -- http://mail.python.org/mailman/listinfo/python-list