目标是计算字符出现的次数,我想按原始字符串的相同顺序打印它
示例:Hello there!
打印出:h 2 e 3 l 2 o 1 t 1
s_list = s.lower().replace(" ","")
#print s_list
char_count = {}
for i in range(0, len(s_list)):
if s_list[i] not in char_count:
char_count[s_list[i]] = 1
else:
char_count[s_list[i]] += 1
s = " "
for k in char_count:
if k in char_count:
s += k + " " + str(char_count[k])
print s
但是由于某些原因,!
出现在第一个字符之后。
答案 0 :(得分:2)
有两种方法可以对代码进行最少的更改:
dict
的Python版本,例如PyPy,CPython 3.6+或任何Python 3.7+(感谢timgeb!)。您必须稍作更改,因为print
是Python 3中的一个函数。使用dict
代替使用collections.OrderedDict
:
import collections
s_list = s.lower().replace(" ","")
#print s_list
char_count = collections.OrderedDict()
for i in range(0, len(s_list)):
...
答案 1 :(得分:0)
您可以通过列表来跟踪输入的字符,该列表保留顺序:
addComment: this.props.addComment
答案 2 :(得分:0)
使用OrderedDict保留字典中的顺序
from collections import OrderedDict
a='Hello there!'
d=OrderedDict()
for i in a.lower():
if(i not in [' ','!']):
d[i]=d.get(i,0)+1
for i,c in d.items():
print(i,c, end=' ')
答案 3 :(得分:0)
您可以通过多种方式来做到这一点。最简单的方法之一是从第二个列表中获得帮助,以使字符保持有序排列。您的代码看起来像这样:
s_list = s.lower().replace(" ","")
order_list = []
#print s_list
char_count = {}
for i in range(0, len(s_list)):
if s_list[i] not in char_count:
order_list.append(s_list[i])
char_count[s_list[i]] = 1
else:
char_count[s_list[i]] += 1
s = " "
for k in order_list:
s += k + " " + str(char_count[k])
print s