Я бы предпочел решение, используя itertools.groupby
, чтобы получить счет, а затем ', '.join
, чтобы объединить результаты:
from itertools import groupby
from re import split
def word_compression(words):
words = split(r',\s*', words)
counts = (f'{word}-{sum(1 for _ in group)}' for word, group in groupby(words))
return ', '.join(counts)
print(word_compression("1,1,1,1,1,1, 2, 2, 2, 2, 3, 3, 1, 1, 1"))
# 1-6, 2-4, 3-2, 1-3