python - 尝试保持字符的顺序

标签 python

目标是计算字符出现次数,我想按照原始字符串的相同顺序打印它

示例:你好!

打印输出: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

但由于某种原因 ! 出现在第一个字符之后。

最佳答案

有两种方法可以对代码进行最少的更改来实现此目的:

  • 使用带有排序 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)):
        ...
    

关于python - 尝试保持字符的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52786004/

相关文章:

python - python : efficient way? 中列表的简单更改

python - 过滤直方图边缘和计数

python - 参数更改时处理类中的实例 - Python

python - 模块未找到错误 : No module named 'sklearn.cross_validation' ??如何修复它?

python - ReportLab 有可流动的 matplotlib 吗?

python - 将带有 header 的 numpy 数组转换为 float

python - 为什么 `script.py <(cat *.gz)` 在 python 2 中可以与 subprocess.Popen 一起使用,但在 python 3 中却不能?

python - 装饰器类和缺少必需的位置参数

python - 在python中使用默认消息引发内置异常

python - 发生 lxml LookupError。参数 : ("unknown encoding: ' b'utf-8-sig ''", )