count consecutive elements
Dan Stromberg
drsalists at gmail.com
Sat Jan 16 20:15:40 EST 2021
On Thu, Jan 14, 2021 at 2:01 PM Wolfram Hinderer via Python-list <
python-list at python.org> wrote:
> Am 13.01.2021 um 22:20 schrieb Bischoop:
> > I want to to display a number or an alphabet which appears mostly
> > consecutive in a given string or numbers or both
> > Examples
> > s= ' aabskaaabadcccc'
> > output: c
> > # c appears 4 consecutive times
> > 8bbakebaoa
> > output: b
> > #b appears 2 consecutive times
> >
> >
> You can let itertools.groupy find the groups.
>
> max((len(tuple(group)), key) for key, group in itertools.groupby(s))
> # (4, 'c')
>
Does anyone else find the documentation on itertools.groupby kind of
lacking?
I think it makes sense now that I've played around with it though.
Here's a revised solution:
def get_longest(string: str) -> typing.Tuple[int, typing.List[str]]:
"""Get the longest run of a single consecutive character."""
if not string:
return (0, [])
grouped = itertools.groupby(string)
grouped_with_lengths = [(len(list(value)), key) for key, value in
grouped]
max_count_and_letter = max(grouped_with_lengths)
max_count = max_count_and_letter[0]
result = (max_count, sorted(list_ for count, list_ in
grouped_with_lengths if count == max_count))
return result
More information about the Python-list
mailing list