计算字符串中的连续字符

Spe*_*ecy 6 python string character count

我需要编写一个切片字符串的代码(这是一个输入),将它附加到一个列表,计算每个字母的数量 - 如果它与之前的字母相同,不要把它放在列表中,而是增加之前的那个字母的外观数量..这就是它应该是这样的:

assassin [['a', 1], ['s', 2], ['a', 1], ['s', 2]], ['i', 1], ['n', 1]
Run Code Online (Sandbox Code Playgroud)

刺客这个词只是需要的一个例子.到目前为止我的代码是这样的:

userin = raw_input("Please enter a string :")
inputlist = []
inputlist.append(userin)
biglist = []
i=0
count = {}
while i<(len(userin)):
    slicer = inputlist[0][i]
    for s in userin:
        if count.has_key(s):
            count[s] += 1
        else:
            count[s] = 1
    biglist.append([slicer,s])
    i = i+1
print biglist 
Run Code Online (Sandbox Code Playgroud)

谢谢!

Ash*_*ary 18

使用Collections.Counter(),字典是一种更好的存储方式:

>>> from collections import Counter
>>> strs="assassin"
>>> Counter(strs)
Counter({'s': 4, 'a': 2, 'i': 1, 'n': 1})
Run Code Online (Sandbox Code Playgroud)

或使用itertools.groupby():

>>> [[k, len(list(g))] for k, g in groupby(strs)]
[['a', 1], ['s', 2], ['a', 1], ['s', 2], ['i', 1], ['n', 1]]
Run Code Online (Sandbox Code Playgroud)

  • @AshwiniChaudhary - `groupby`解决方案很不错. (5认同)