elleryq
9/26/2014 - 7:35 AM

將連續元素分組,然後找出出現次數最多的。

將連續元素分組,然後找出出現次數最多的。

from itertools import groupby
from collections import Counter
from pprint import pprint

def getContinuousItemsCount(l):
    x = [tuple(g) for k, g in groupby(l)]
    tupleCounter = Counter(x)
    s = set(x)
    d = {}
    for t in s:
        d[t] = tupleCounter[t]
    return d

pprint(getContinuousItemsCount(
    ['A', 'B', 'A', 'A', 'B', 'A', 'A', 'A', 'B', 'A']))
pprint(getContinuousItemsCount(
    ['H', 'T', 'H', 'H', 'T', 'T', 'T', 'T', 'T', 'H']))
pprint(getContinuousItemsCount(
    ['H', 'H', 'H', 'H', 'H', 'T', 'H', 'T', 'H', 'H']))
pprint(getContinuousItemsCount(
    ['H', 'T', 'T', 'T', 'H', 'H', 'H', 'H', 'T', 'T']))