用Python统计字符串中字符数量的6种方法 |
您所在的位置:网站首页 › 用数组统计各种字符个数 › 用Python统计字符串中字符数量的6种方法 |
一、问题的提出1.题目要求 看到Python群有网友提问以下问题: 接收输入的字符,统计每一个字符在字符串中的数量,然后进行格式化输出,题目见下方:本题是考察Python最基本的循环、统计、格式化输出等内容,涉及字符串、字典、数字等数据结构。本题实质在于如何统计列表中的元素个数,我们用以下几种方法来解决: 1.字典法(四行代码)L=input() #输入一个字符串 counts={} # 定义一个字典 for word in L: if word in counts:# 判断字符是否已经在字典中 counts[word]+=1 #如果在字典中就加1,不在则键值还是1 else: counts[word]=1 for i in counts: print('{} {}'.format(i,counts[i]))撇开题目本身,我们可以用列表推导式实现字符串中字符的快速统计,代码如下: L=input() # counts={word:L.count(word) for word in set(L)} for k,v in counts.items(): print(k,v)collections中自带一个统计功能的Counter,它可以生成一个字典,非常方便。我们编写以下代码: from collections import Counter #导入Counter L=input() a=Counter(L) # 生成一个实例,并赋值给a for k,v in a.items(): # 循环打印出来a中的内容。 print(k,v)采用字典推导式相对更简洁,原理是生成生一个字典,再调用字典中的内容: s = input() dic={i:s.count(i) for i in s} [print(j,dic[j]) for j in dic]当然上述代码也可以简化为二行代码,更为简洁,但是理解起来没有上面的容易。 s = input() [print(j,{i:s.count(i) for i in s}[j]) for j in {i:s.count(i) for i in s}]NLTK是一款自然语言处理工具包,内置非常多的语方处理工具,可以很方便的使用,我们编写以下代码: from nltk import FreqDist L=input() freq = FreqDist(L) for key,value in freq: print(key,value)三、学后反思我们可以采取多种办法来解决字符统计的问题,当然最简单、最实用的就是采用字典或列表推导式,这也是计算机等级考试中常考的内容。当然如果你了解NLTK, Counter等工具,也可以简化思路和算法。由于Counter是Python的内置工具包,只用导入就可以用,所以也推荐使用这个现成的轮子,简化算法。字典和列表推导式是Python中非常重要的数据结构和处理问题的方法,功能也非常强大,大家在日常学习中好好学习体会和把握,一定要通过实践操作来加深自己的理解。学习Python贵在坚持,并善于总结和归纳,以项目为导向,综合运用各种方法来解决同一个问题,这样才能更好地学习Python。我是PythonFan,一个热爱翻译和编程的文科生,欢迎关注我,带给你不一样的学习体验。 参考内容: [1] 参考^abPython统计字符/单词/汉字个数(字典)的三种方法 https://blog.csdn.net/henanlion/article/details/121988457 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |