Подсчет последовательных дубликатов строк из списка - PullRequest
0 голосов
/ 13 июня 2018

У меня есть список строк Python, такой, что

Ввод:

li = ['aaa','bbb','aaa','abb','abb','bbb','bbb','bbb','aaa','aaa']

Что я могу сделать, чтобы сгенерировать другой список, подсчитывающий количество последовательных повторений любой строки в списке?Для списка выше список возврата похож на:

Ожидаемый результат:

li_count = [['aaa',1],['bbb',1]['abb',2],['bbb',3],['aaa',2]]

1 Ответ

0 голосов
/ 13 июня 2018

Использование itertools.groupby:

from itertools import groupby
li = ['aaa','bbb','aaa','abb','abb','bbb','bbb','bbb','aaa','aaa']

a = [[i, sum(1 for i in group)] for i, group in groupby(li)]
print(a)
[['aaa', 1], ['bbb', 1], ['aaa', 1], ['abb', 2], ['bbb', 3], ['aaa', 2]]

Спасибо @ user3483203 за улучшение:

a = [[i, len([*group])] for i, group in groupby(li)]
...