如何制作一个考虑z的Python索引的dictionary / collections.counter?

时间:2018-10-25 01:59:40

标签: python dictionary collections counter

我知道字典和集合。Python中的计数器。 我的问题是我该如何考虑字符串的索引? 例如,此字符串:aaabaaa 我想创建一个包含每个进行中的字符串的元组,跟踪计数从左到右,并在找到新的字母数字时重置计数。 例如,我喜欢看到以下输出:  [('a',3),('b',1),('a',3)]

任何想法如何使用字典/ Counter /还是Python可以使用其他内置的数据结构?

致谢

1 个答案:

答案 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)计算组中的元素数量。