我知道字典和集合。Python中的计数器。 我的问题是我该如何考虑字符串的索引? 例如,此字符串:aaabaaa 我想创建一个包含每个进行中的字符串的元组,跟踪计数从左到右,并在找到新的字母数字时重置计数。 例如,我喜欢看到以下输出: [('a',3),('b',1),('a',3)]
任何想法如何使用字典/ Counter /还是Python可以使用其他内置的数据结构?
致谢
答案 0 :(得分:0)
您可以使用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)
计算组中的元素数量。