Python 2.7字符频率统计编程求助:实现字符出现次数统计
解决Python 2.7字符出现次数统计问题
嘿,你已经迈出了关键的第一步——把输入字符串转成字符列表,接下来的计数环节其实很简单,我给你两种实用的方案,一步步来:
方法一:手动遍历字典统计
字典的键值对刚好适配「字符-出现次数」的映射关系,逻辑直白易懂:
- 先初始化一个空字典用来存计数结果
- 遍历你转好的字符列表,逐个更新每个字符的计数
完整代码示例:
string = raw_input("Enter a string: ") newString = list(string) # 初始化空字典用于存储计数 count_dict = {} for char in newString: if char in count_dict: # 字符已存在,计数加1 count_dict[char] += 1 else: # 字符首次出现,初始化为1 count_dict[char] = 1 # 输出最终计数结果 print(count_dict)
测试输入google.com的话,会输出{'g': 2, 'o': 3, 'l': 1, 'e': 1, '.': 1, 'c': 1, 'm': 1}(注:Python 2.7的字典默认无序,但计数完全准确;如果需要按次数排序可以额外处理,你的需求里没要求顺序的话这样就足够了)
方法二:用collections.Counter(更简洁高效)
Python 2.7的collections模块自带Counter类,专门用来做可迭代对象的计数,一行代码就能搞定统计,非常省心:
from collections import Counter string = raw_input("Enter a string: ") newString = list(string) # 直接用Counter完成统计 counts = Counter(newString) # Counter对象可直接转为字典输出 print(dict(counts))
如果想要让输出和你示例里的顺序一致(按出现次数从多到少排列),可以再加一行排序代码:
# 按出现次数降序排序,转成字典后输出 sorted_counts = sorted(counts.items(), key=lambda x: x[1], reverse=True) print(dict(sorted_counts))
这样输入google.com就会输出{'o': 3, 'g': 2, '.': 1, 'e': 1, 'l': 1, 'm': 1, 'c': 1},和你给出的示例完全匹配!
内容的提问来源于stack exchange,提问作者Zee Dhlomo
相关产品推荐
相关产品推荐

