Python 如何找到一个字符串在列表中连续重复的最大数量?

Python 如何找到一个字符串在列表中连续重复的最大数量?,python,algorithm,Python,Algorithm,例如,假设列表如下所示: ['ABC', 'ABC', 'XYZ', 'ABC', 'ABC', 'ABC'] 然后你输入'ABC' 它应该返回数字3,因为'ABC'连续重复的最大次数是3。 你打算怎么做 我试着在列表中反复检查索引是否为“ABC”,下一个索引是否为“ABC”,但这几乎不可能找到最大数。您可以使用对连续元素进行分组的方法来完成此操作。通过不提供关键功能,它将相等的元素分组 我们需要使用sum(1表示v中的uu)来获得运行的长度(因为它是一个可数而不是一个列表,我们不能使用len

例如,假设列表如下所示:

['ABC', 'ABC', 'XYZ', 'ABC', 'ABC', 'ABC']
然后你输入
'ABC'
它应该返回数字
3
,因为
'ABC'
连续重复的最大次数是
3
。 你打算怎么做

我试着在列表中反复检查索引是否为“ABC”,下一个索引是否为“ABC”,但这几乎不可能找到最大数。

您可以使用对连续元素进行分组的方法来完成此操作。通过不提供关键功能,它将相等的元素分组

我们需要使用
sum(1表示v中的uu)
来获得运行的长度(因为它是一个可数而不是一个列表,我们不能使用
len
)和
max
来获得最大的长度

从itertools导入groupby
def最长运行时间(lst,元件):
返回最大值(k的和(v中的u为1),如果k==元素,则返回groupby(lst)中的v)
例如:

>>最长运行时间(lst,“ABC”)
3.
>>>最长运行时间(lst,'XYZ')
1.
试试:

从itertools导入groupby
x=['ABC','ABC','XYZ','ABC','ABC','ABC','ABC']
y=dict(gr的排序([(gr,len(list(val))),gr的排序([(gr,len(val)),groupby中的val(x,lambda el:el)],key=lambda el:el[1]))
它将返回每个元素的最大连续出现次数的
dict
,因此要获得
ABC
的最大连续出现次数,只需执行以下操作:

>y[“ABC”]
3.
简而言之-
groupby
将连续发生的事件分组在一起

len(list(val))
将对它们进行计数

接下来,我们对它们进行排序,以获得最后连续出现次数最多的元素

然后我们转换为
dict
——利用这样一个事实,即在同一个键多次出现的情况下,
dict
总是取最后一个键,由于排序,它总是出现次数最多的键