问题:给定序列,统计所有元素出现的次数

法一 : seq.count()

seq = 'abcdbabaecccdbb' #待统计序列

#先变成集合得到seq中的所有元素,避免重复遍历

set_seq = set(seq)

rst = []

for item in set_seq:

rst.append((item,seq.count(item))) #添加元素及出现个数

#输出结果,[('a', 3), ('e', 1), ('b', 5), ('c', 4), ('d', 2)]

print(rst)

法二:使用字典dict

seq='abcdbabaecccdbb' #待统计序列

dict = {}

for item in seq: #遍历str

if item not in dict: #第一次出现,赋初值1

dict[item] = 1

else: #出现次数加一

dict[item] += 1

#得到结果 {'a': 3, 'b': 5, 'c': 4, 'd': 2, 'e': 1}

print(dict)

法三:使用内置模块collections中的Counter类

'''Counter是用于计算可哈希对象的dict子类,

其中元素存储在字典键中,计数存储在字典值中

不可哈希: 列表,集合,字典

可哈希: 数值,元组,字符串,布尔类型'''

from collections import Counter

seq ='abcdbabaecccdbb' #待统计序列

'''Counter()统计每个元素出现次数'''

counter = Counter(seq)

#counter --> Counter({'b': 5, 'c': 4, 'a': 3, 'd': 2, 'e': 1})

print(counter)

'''most_common(n)统计出现次数前n位的元素'''

most = counter.most_common()

#most --> [('b', 5), ('c', 4), ('a', 3), ('d', 2), ('e', 1)]

'''可以指定输出个数和排序方式'''

most_one = counter.most_common(1)

print(most_one) #most_one --> [('b', 5)]

#根据元素大小升序排序

most.sort(key = lambda item:item[0])

print(most) #most --> [('a', 3), ('b', 5), ('c', 4), ('d', 2), ('e', 1)]

#根据出现次数降序排序

most.sort(key = lambda item:item[-1],reverse = True)

print(most) #most --> [('b', 5), ('c', 4), ('a', 3), ('d', 2), ('e', 1)]

LeetCode | 347. 前K个高频元素

题目描述 :给定一个非空的整数数组,返回其中出现频率前 k 高的元素。

示例 1:

输入: nums = [1,1,1,2,2,3], k = 2

输出: [1,2]

示例 2:

输入: nums = [1], k = 1

输出: [1]

from collections import Counter

class Solution(object):

def topKFrequent(self, nums, k):

"""

:type nums: List[int]

:type k: int

:rtype: List[int]

"""

cnt = Counter(nums)

top_k = cnt.most_common(k) #返回nums中前k个高频元素

return [rst[0] for rst in top_k] #返回结果

result = Solution()

nums = [1,2,3,2,3,4,3,1,2,4,4,5,4,2,2]

#先看一下nums的统计信息

print(Counter(nums)) # Counter({2: 5, 4: 4, 3: 3, 1: 2, 5: 1})

#前k个高频元素

print(result.topKFrequent(nums,3)) #[2, 4, 3]

LeetCode | 451. 根据字符出现频率排序

题目描述 :给定一个字符串,请将字符串里的字符按照出现的频率降序排列

示例 1:

输入:

"tree"

输出:

"eert"

解释:

'e'出现两次,'r'和't'都只出现一次。

因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。

示例 2:

输入:

"cccaaa"

输出:

"cccaaa"

解释:

'c'和'a'都出现三次。此外,"aaaccc"也是有效的答案。

注意"cacaca"是不正确的,因为相同的字母必须放在一起。

示例 3:

输入:

"Aabb"

输出:

"bbAa"

解释:

此外,"bbaA"也是一个有效的答案,但"Aabb"是不正确的。

注意'A'和'a'被认为是两种不同的字符。

from collections import Counter

class Solution(object):

def frequencySort(self, s):

"""

:type s: str

:rtype: str

"""

rst = ''

cnt = Counter(s)

most = cnt.most_common()

#将字符串里的字符按照出现的频率降序排列

most.sort(key = lambda x: x[-1],reverse = True)

for element,count in most: #遍历

rst += element * count #element --> 元素

return rst #count --> 出现次数

result = Solution()

print(result.frequencySort("tree")) #eetr

print(result.frequencySort("bbAa")) #bbAa

LeetCode | 136. 只出现一次的数字

题目描述:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

示例 1:

输入: [2,2,1]

输出: 1

示例 2:

输入: [4,1,2,1,2]

输出: 4

from collections import Counter

class Solution:

def singleNumber(self, nums):

"""

:type nums: List[int]

:rtype: int

"""

cnt = Counter(nums)

s = cnt.most_common(len(nums)) #返回(值,次数),并按出现次数排序

return s[-1][0] #出现一次的元素在最后

''' 方法二:

^ 异或-->自身异或得0, 1^1 --> 0. 与0异或得到自身, 123^0 --> 123

异或满足交换律 --> 1^2^1 == 1^1^2 --> 2.

2^3^4^2^3 == 2^2^3^3^4 --> 4

因为出现一次的元素只有一个,所以对nums中所有元素进行异或即可得到结果

rst = 0

for num in nums:

rst ^= num

return rst

'''

result = Solution()

print(result.singleNumber([4,1,2,1,2])) #4

统计哈姆雷特中出现次数最多的20个词

from collections import Counter

import re

#正则表达式分割单词并转小写

words = re.findall(r'\w+', open('hamlet.txt').read().lower())

count = Counter(words)

most_20 = count.most_common(20)

print('序号 单词 出现次数')

for idx,(word,cnt) in enumerate(most_20,1):

print(' {0:<8}{1:<10}{2:>2}'.format(idx,word,cnt))

'''输出结果

序号 单词 出现次数

1 the 1143

2 and 966

3 to 762

4 of 669

5 i 631

6 you 554

7 a 546

8 my 514

9 hamlet 471

10 in 451

11 it 419

12 that 407

13 is 358

14 not 315

15 lord 311

16 this 297

17 his 296

18 but 271

19 with 268

20 for 252

'''

python统计字典中元素个数_Python计数器 | collections.Counter相关推荐

  1. python统计列表中元素个数_python中计算一个列表中连续相同的元素个数方法

    python中计算一个列表中连续相同的元素个数方法 最简单的例子: a = [1,1,1,1,2,2,2,3,3,1,1,1,3] # 问:计算a中最多有几个连续的1 很明显,答案是4 如果用代码实现 ...

  2. python统计句子中单词个数_python练习:一行搞定-统计一句话中每个单词出现的个数...

    原博文 2018-10-04 19:42 − 一行搞定-统计一句话中每个单词出现的个数 >>> s'i am a boy a bood boy a bad boy' 方式一:> ...

  3. python统计句子中单词个数_Python练习第三题,统计单词个数

    ^第三题:一个英文的纯文本文件,统计其中的单词出现的个数. 统计什么好呢,就拿Python彩蛋import this来试试吧.(将下列单词保存为"test.txt")>> ...

  4. python统计字典里面value出现的次数_python统计字典中元素出现的次数

    有一个功能,想必大家经常能用到,那就是我们办公软件上常用的查找内容,因为有这个功能存在,所以我们在办公时候,效率特别的快,而语言的存在是要我们快速去得到结果,提高我们的效率,想必大家听到这里,就应该知 ...

  5. 用python统计字母个数_python统计字母个数 python 统计文本中字母个数

    python 统计文本中字母个数 作业文件等有人回答小编再发,之前发文件被屏蔽了明明转身就有一个温馨的港湾,却偏偏还要去追逐那无望的孤船. l = 0with open('file.txt', 'r' ...

  6. java map 元素个数_Java 小模块之--统计字符串中元素个数

    Java 小模块之--统计字符串中元素个数 曾经看过我Stream或者Guava类库等文章的小伙伴应该很明白我这篇博文的意义所在了 一是给读者提供综合的博文入口 二是自己也总结一下思路 ps: 之前没 ...

  7. python统计中文字符的个数_python统计不同字符的个数_后端开发

    c++怎么将字符串转数字_后端开发 在"c++"中可以使用"atoi"库函数将字符串转成数字,其语法是"int atoi(const char *np ...

  8. python统计句子中单词个数_【python统计单词数量】作文写作问答 - 归教作文网

    如何用python统计一个txt文件中某个单词出现的次数 1.首先,定义一个变量,保存要统计的英文文章. 2.接着,定义两个数组,保存文章中的单词,以及各单词的词频. 3.从文章中分割出所有的单词,保 ...

  9. Python 统计列表中元素出现的次数

    统计字符串或者列表中出现的字符串.元素个数,可以把字符串转为列表处理, s = '123123' x = [x for x in s] 方法1 def single_list(arr, target) ...

  10. python统计中文字符的个数_python统计中文字符数量的两种方法

    方法一: def str_count(str): '''找出字符串中的中英文.空格.数字.标点符号个数''' count_en = count_dg = count_sp = count_zh = c ...

最新文章

  1. 1057 Stack
  2. python类型提示模块包_(任何)python模块的类型提示是什么?
  3. 移动银行木马活跃度升级 恐成黑客攻击跳板
  4. 集赞有礼!进击吧! Blazor !第六期 企业内部应用建设实战
  5. 非科班Java尝试全国高校计算机能力挑战赛第三届计挑赛
  6. 小白自学前端,轻松月入过万哦!
  7. ftl if else判断_为什么都不用 switch 而使用 if/ else 来做条件判断?
  8. linux 命令行下载bt,linux命令行下载BT种子和磁力链接
  9. vue导出数据为Excel文件
  10. 用PS去掉图片中的文字
  11. C语言—gotoxy()函数
  12. 黑群晖vmm专业版_教你群晖用自带的VMM虚拟机安装精简版win10系统教程
  13. 饥荒lisp_创建饥荒(Don't starve)专用服务器(Dedicated Server)遇到的问题
  14. 人人商城图片错乱问题
  15. PCB各层含义简介 浅显易懂 图文展示
  16. CAT客户端架构设计
  17. Discord机器人开发
  18. springBoot员工管理系统
  19. 简易的本地音乐播放器 适用于Java初学者
  20. Firefox 删除插件

热门文章

  1. 快速学习nodejs系列:四、nodejs特性1--单线程
  2. 一道容易栽坑的有趣的面试题(关于js,定时器,闭包等)
  3. php支持的协议与封装协议
  4. XNA Game Studio 2.0安装问题,崩溃了
  5. java处理excel的读写
  6. tomcat处理连接的详细过程
  7. mybatis逆向工程详解
  8. 我爱刷题系列汇总(51-100)【2017.11.24-2018.01.12】
  9. 元素命名空间中的“MvcBuildViews”无效
  10. 全局变量不能放在头文件其中