String 如果下一个字符出现,请计数相同的字符 def检查(输入): mylist=列表(输入) 打印mylist 位置=0 总数=0 计数={} 当位置

String 如果下一个字符出现,请计数相同的字符 def检查(输入): mylist=列表(输入) 打印mylist 位置=0 总数=0 计数={} 当位置,string,python-2.7,list,String,Python 2.7,List,我想数一数同样的角色,如果它是下一个。例如,对于这个示例输入,输出应该是这样的; 计数={a:2,b:4,c:2,b:1,d:1,a:1,d:1} 我在名单上找到了索引器。任何帮助都将不胜感激 def check(input): mylist = list(input) print mylist position = 0 total = 0 count = {} while position < len(mylist):

我想数一数同样的角色,如果它是下一个。例如,对于这个示例输入,输出应该是这样的; 计数={a:2,b:4,c:2,b:1,d:1,a:1,d:1}

我在名单上找到了索引器。任何帮助都将不胜感激

 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")
输入:

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

s = 'aabbbbccbdad'

您有IndexError,因为您正在检查
mylist[position+1]
,它将在上一次循环迭代中超出索引。您应该编辑代码(def在代码之外)。你还应该使计数规则更清晰。我不明白你为什么会有“d:1”,那么“b:1”,“d:1”,“a:1”和“d:1”呢?嗨,alex baranowski,是的,这也会添加到dict上。只是想显示一个示例输出。
[('a', 2), ('b', 4), ('c', 2), ('b', 1), ('d', 1), ('a', 1), ('d', 1)]