'Improving (shortening) my list comprehension with lambda x function?

!!! I know I could use Counter() here, but that's not the point !!!

Giving the code below:

test =[['a',1],['a',2],['b',3], ['c',5],['a',7],['c',9]]

{i:[test[x][0] for x in range(len(test))].count(i) for i in [test[x][0] for x in range(len(test))]}

output: {'a': 3, 'b': 1, 'c': 2}

Is there a way to avoid repeating the sequence without creating another variable:

[test[x][0] for x in range(len(test))]


Solution 1:[1]

from itertools import groupby

test =[['a',1],['a',2],['b',3], ['c',5],['a',7],['c',9]]

{key: sum(j[1] for j in i) for key, i in groupby(test, key=lambda x: x[0])}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Vovin