#!/usr/bin/env python3
from itertools import groupby
from operator import itemgetter
from pprint import pprint
L = [(1, 11, u'a', u'b'),
(1, 24, u'd', u'c'),
(1, 44, u'e', u'f'),
(2, 66, u'h', u'g'),
(2, 24, u'i', u'j' ),
(4, 5, u'l', u'k')]
l2 = [12, 48, 99]
grouped = map(itemgetter(1), groupby(L, key=itemgetter(0)))
L = [(new_value,) + item[1:]
for group, new_value in zip(grouped, l2)
for item in group]
pprint(L)
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwpmcm9tIGl0ZXJ0b29scyBpbXBvcnQgZ3JvdXBieQpmcm9tIG9wZXJhdG9yIGltcG9ydCBpdGVtZ2V0dGVyCmZyb20gcHByaW50IGltcG9ydCBwcHJpbnQKCkwgPSBbKDEsIDExLCB1J2EnLCB1J2InKSwgCigxLCAyNCwgdSdkJywgdSdjJyksIAooMSwgNDQsIHUnZScsIHUnZicpLCAKKDIsIDY2LCB1J2gnLCB1J2cnKSwgCigyLCAyNCwgdSdpJywgdSdqJyApLCAKKDQsIDUsIHUnbCcsIHUnaycpXQpsMiA9IFsxMiwgNDgsIDk5XQoKZ3JvdXBlZCA9IG1hcChpdGVtZ2V0dGVyKDEpLCBncm91cGJ5KEwsIGtleT1pdGVtZ2V0dGVyKDApKSkKTCA9IFsobmV3X3ZhbHVlLCkgKyBpdGVtWzE6XSAKICAgICBmb3IgZ3JvdXAsIG5ld192YWx1ZSBpbiB6aXAoZ3JvdXBlZCwgbDIpCiAgICAgZm9yIGl0ZW0gaW4gZ3JvdXBdCnBwcmludChMKQo=
[(12, 11, 'a', 'b'),
(12, 24, 'd', 'c'),
(12, 44, 'e', 'f'),
(48, 66, 'h', 'g'),
(48, 24, 'i', 'j'),
(99, 5, 'l', 'k')]