2017-10-23 5 views
0
def check(input): 



mylist = list(input) 

    print mylist 

    position = 0 

    total = 0 

    count = {} 

    while position < len(mylist): 

     if mylist[position] == mylist[position + 1]: 
      # print mylist[position] 
      total = total + 1 
      count[mylist[position]] = total 
      print count 
      if mylist[position] != mylist[position +1]: 
       total = 0 
      if mylist[position] == len(mylist) - 1: 
       break 

     position = position + 1 

    print count 


check("aabbbbccbdad") 

次は、同じ文字を数えたいと思います。たとえば、このサンプル入力の場合、出力はそのようになります。 count = {"a":2、 "b":4、 "c":2、 "b":1、 "d":1、 "a":1、 "d":1}次の場合は同じ文字をカウントする

リストの中にIndexErrorがあります。どんな助けにも感謝します。

+0

あなたが最後のループ反復でインデックス外となります 'マイリスト[位置1]を'チェックされているので、あなたははIndexErrorを持っています。コードを編集する必要があります(defはコード外です)。 また、カウントルールを明確にする必要があります。なぜあなたは「d:1」、「b:1」、「d:1」、「a:1」および「d:1」を持っているのか理解できません。 –

+0

こんにちは@ alex-baranowskiはい、そのdictにも追加されます。サンプル出力を表示したかっただけです。 – pydev

答えて

1
from itertools import groupby 
groups = groupby(s) 
result = [(label, sum(1 for _ in group)) for label, group in groups] 
result 

入力:

s = 'aabbbbccbdad' 

出力:

[('a', 2), ('b', 4), ('c', 2), ('b', 1), ('d', 1), ('a', 1), ('d', 1)]