我怎样才能制作一个字典/collections.counter,将Python中的索引考虑在内?



我知道字典和集合。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)计算组中元素的数量。

最新更新