1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
>>> l = [(1, 1, 4), (3, 1, 11), (2, 1, 13), (6, 1, 17), (5, 1, 17), (4, 1, 18), (2, 2, 28), (1, 2, 29), (3, 2, 30), (4, 2, 31), (5, 2, 31), (6, 2, 33), (1, 3, 45), (3, 3, 51)]
>>> d = {}
>>> for x in l:
... if x[0] in d:
... if x[1] > d[x[0]][0]:
... d[x[0]] = x[1:]
... else:
... d[x[0]] = x[1:]
...
>>> d.items()
[(1, (3, 45)), (2, (2, 28)), (3, (3, 51)), (4, (2, 31)), (5, (2, 31)), (6, (2, 33))]
>>> print dict([(x[0], x) for x in sorted(l, key=lambda x: x[1])]).values()
[(1, 3, 45), (2, 2, 28), (3, 3, 51), (4, 2, 31), (5, 2, 31), (6, 2, 33)]
>>> import itertools
>>> import operator
>>> print dict((k, max(v, key=operator.itemgetter(1))) for k, v in itertools.groupby(sorted(l), key=operator.itemgetter(0))).values()
[(1, 3, 45), (2, 2, 28), (3, 3, 51), (4, 2, 31), (5, 2, 31), (6, 2, 33)] |
Partager