Не совсем то, что вы просили, но, может быть, проще работать?
>>> from itertools import groupby
>>> L = [(1, 2), (1, 8), (2, 3), (2, 7), (2, 8), (2, 9), (3, 1), (3, 2), (3, 5), (3, 6), (3, 7), (3, 7), (3, 9)]
>>> for key, group in groupby(L, lambda x: x[0]):
... print key, list(group)
...
1 [(1, 2), (1, 8)]
2 [(2, 3), (2, 7), (2, 8), (2, 9)]
3 [(3, 1), (3, 2), (3, 5), (3, 6), (3, 7), (3, 7), (3, 9)]
Ссылка на документацию .
Edit:
Я полагаю, что-то вроде этого - больше, чем вы просите:
>>> d = {}
>>> for key, group in groupby(L, lambda x: x[0]):
... d[key] = [i[1] for i in group]
...
>>> d
{1: [2, 8], 2: [3, 7, 8, 9], 3: [1, 2, 5, 6, 7, 7, 9]}
Если вы абсолютно хотите, чтобы ключ был строкой, вы можете написать его следующим образом:
d[str(key)] = [i[1] for i in group]