我知道字典和集合。Python 中的计数器。 我的问题是我怎样才能制作一个考虑到字符串索引的? 例如,对于此字符串:aaabaaa 我想制作一个包含每个正在进行的字符串的元组,从左到右跟踪计数,并在找到新的字母数字后重置计数。 例如,我喜欢看到这样的输出: [("a", 3(, ("b", 1(, ("a", 3(]
知道如何使用字典/计数器/或者Python中是否内置了其他一些我可以使用的数据结构?
问候
您可以使用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)
计算组中元素的数量。