Проверьте количество последовательных равных элементов в Python - PullRequest
1 голос
/ 26 января 2020

Моя цель - определить максимальное количество последовательных равных элементов в данной строке или списке.

Я попытаюсь быть более ясным, используя пример:

( 1,1,1,1) -> {1: 4}

(1,1, 'a', 'a', 1) -> {1: 2, 'a': 2}

(2,2,2,0,2,2,0) -> {2: 3, 0: 1}

Я устал от чего-то подобного, но это так не работает:

d={}
for i in range(len(l)):
    while l[i]==l[i+1]:
        d[i]=l.count(i)
return d

Ответы [ 2 ]

0 голосов
/ 26 января 2020

Другое решение здесь, используя itertools 'groupby метод:

from itertools import groupby

l = [2,2,2,0,2,2,0]
elems = list(set(l))
g = [{elem : max([len(list(g)) for k,g in groupby(l) if elem == k])} for elem in elems]
print(g)

Результат:

[{0: 1}, {2: 3}]
0 голосов
/ 26 января 2020

Один возможный подход, используя itertools.groupby:

from itertools import groupby

t = 1,1,'a','a',1

out = {}
for v, g in groupby(t):
    l = sum(1 for _ in g)
    if out.get(v, float('-inf')) < l:
        out[v] = l

print(out)

Отпечатки:

{1: 2, 'a': 2}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...