chris <oz...@web.de> writes: > Hi, > > have anybody a hint , how i get a dict from non unique id's and their > different related values. > > Thanks for advance > Chris > > ###random data # > a=range(10)*3 > def seqelem(): > i=random.randint(0,2) > elem=['a','b','c'][i] > return elem > > s=[seqelem() for t in range(30)] > print zip(a,s) > > ## favored result: > { '0':'c->c->a' ,'1':'a->b->a' .........}
Here's one way: >>> import random >>> >>> a=range(10)*3 >>> def seqelem(): ... i=random.randint(0,2) ... elem=['a','b','c'][i] ... return elem ... >>> s=[seqelem() for t in range(30)] >>> z = zip(a, s) >>> print z [(0, 'b'), (1, 'a'), (2, 'b'), (3, 'a'), (4, 'b'), (5, 'c'), (6, 'b'), (7, 'c'), (8, 'b'), (9, 'b'), (0, 'a'), (1, 'b'), (2, 'b'), (3, 'c'), (4, 'c'), (5, 'b'), (6, 'c'), (7, 'a'), (8, 'a'), (9, 'c'), (0, 'b'), (1, 'c'), (2, 'b'), (3, 'a'), (4, 'c'), (5, 'a'), (6, 'c'), (7, 'b'), (8, 'c'), (9, 'c')] >>> >>> from itertools import groupby >>> from operator import itemgetter >>> >>> z.sort(key=itemgetter(0)) >>> print dict((k, '->'.join(map(itemgetter(1), it))) ... for k, it in groupby(z, itemgetter(0))) {0: 'b->a->b', 1: 'a->b->c', 2: 'b->b->b', 3: 'a->c->a', 4: 'b->c->c', 5: 'c->b->a', 6: 'b->c->c', 7: 'c->a->b', 8: 'b->a->c', 9: 'b->c->c'} HTH -- Arnaud -- http://mail.python.org/mailman/listinfo/python-list