Counting consecutive duplicates of strings from a list

耗尽温柔 提交于 2020-01-14 06:50:09

问题


I have a Python list of strings such that,

Input:

li = ['aaa','bbb','aaa','abb','abb','bbb','bbb','bbb','aaa','aaa']

What can I do to generate another list counting the number of consecutive repetitions of any string in the list? For the list above the return list resembles:

Expected Output:

li_count = [['aaa',1],['bbb',1]['abb',2],['bbb',3],['aaa',2]]

回答1:


Use itertools.groupby:

from itertools import groupby
li = ['aaa','bbb','aaa','abb','abb','bbb','bbb','bbb','aaa','aaa']

a = [[i, sum(1 for i in group)] for i, group in groupby(li)]
print(a)
[['aaa', 1], ['bbb', 1], ['aaa', 1], ['abb', 2], ['bbb', 3], ['aaa', 2]]

Thank you @user3483203 for improvement:

a = [[i, len([*group])] for i, group in groupby(li)]


来源:https://stackoverflow.com/questions/50829381/counting-consecutive-duplicates-of-strings-from-a-list

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!