Python 对字符串中的连续字符计数
我需要编写一个代码,对字符串(这是一个输入)进行切片,将其附加到列表中,计算每个字母的数量-如果它与前面的字母相同,则不要将其放入列表中,而是增加前面的字母的外观数。。 这就是它的样子:Python 对字符串中的连续字符计数,python,string,count,character,Python,String,Count,Character,我需要编写一个代码,对字符串(这是一个输入)进行切片,将其附加到列表中,计算每个字母的数量-如果它与前面的字母相同,则不要将其放入列表中,而是增加前面的字母的外观数。。 这就是它的样子: assassin [['a', 1], ['s', 2], ['a', 1], ['s', 2]], ['i', 1], ['n', 1] 刺客这个词只是需要的一个例子。。 到目前为止,我的代码是这样的: userin = raw_input("Please enter a string :") inputl
assassin [['a', 1], ['s', 2], ['a', 1], ['s', 2]], ['i', 1], ['n', 1]
刺客这个词只是需要的一个例子。。
到目前为止,我的代码是这样的:
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
userin=raw\u输入(“请输入字符串:”)
inputlist=[]
inputlist.append(userin)
biglist=[]
i=0
计数={}
当我使用时,字典是一种更好的存储方式:
>>> from collections import Counter
>>> strs="assassin"
>>> Counter(strs)
Counter({'s': 4, 'a': 2, 'i': 1, 'n': 1})
或使用:
仅使用内置设备:
def cnt(s):
current = [s[0],1]
out = [current]
for c in s[1:]:
if c == current[0]:
current[1] += 1
else:
current = [c, 1]
out.append(current)
return out
print cnt('assassin')
这并不能保持字母的顺序。@SilentGhost:因为这就是问题所在。答案与提问者给出的例子不符。@SilentGhost“这就是它应该是什么样子:刺客[[a',1],[s',2],[a',1],[s',2],[i',1],[n',1]”@AshwiniChaudhary--groupby
解决方案很好。对不起,我是一个很好的开始者。。从你的帮助中我似乎没有什么意义。。
def cnt(s):
current = [s[0],1]
out = [current]
for c in s[1:]:
if c == current[0]:
current[1] += 1
else:
current = [c, 1]
out.append(current)
return out
print cnt('assassin')
last = ''
results = []
word = 'assassin'
for letter in word:
if letter == last:
results[-1] = (letter, results[-1][1] +1)
else:
results.append((letter, 1))
last = letter
print result # [('a', 1), ('s', 2), ('a', 1), ('s', 2), ('i', 1), ('n', 1)]