String 如果下一个字符出现,请计数相同的字符 def检查(输入): mylist=列表(输入) 打印mylist 位置=0 总数=0 计数={} 当位置
我想数一数同样的角色,如果它是下一个。例如,对于这个示例输入,输出应该是这样的; 计数={a:2,b:4,c:2,b:1,d:1,a:1,d:1} 我在名单上找到了索引器。任何帮助都将不胜感激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):
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)]