Как я могу сделать dictionary / collection.counter, который учитывает индекс в Python? - PullRequest
0 голосов
/ 25 октября 2018

Мне известны словари и сборники. Встречаются на Python.У меня вопрос, как я могу сделать тот, который учитывает индекс строки?Например, для этой строки: aaabaaa Я хотел бы создать кортежи, которые содержат каждую строку в прогрессии, отслеживая счет слева направо и сбрасывая счет, как только будет найден новый алфавитно-цифровой символ.Например, мне нравится видеть этот вывод: [('a', 3), ('b', 1), ('a', 3)]

Любая идея, как использовать словарь / счетчик/ или есть какая-то другая структура данных, встроенная в Python, которую я могу использовать?

С уважением

1 Ответ

0 голосов
/ 25 октября 2018

Вы можете использовать groupby :

from itertools import groupby

m = [(k, sum(1 for _ in v)) for k, v in groupby('aaabaaa')]

print(m)

Выход

[('a', 3), ('b', 1), ('a', 3)]

Объяснение

Функция groupby создает итератор, который возвращает последовательные ключи и группы из итерируемого, в данном случае 'aaabaaa'.Ключ k является значением, идентифицирующим группу, ['a', 'b', 'a'].sum(1 for _ in v) подсчитывает количество элементов в группе.

...