问题3:如何统计序列中元素的出现频度

例1:从随机列表中,找到找到出现次数最高的3个元素,及出现次数

方法一:

from random import randint

date = [randint(0, 20) for _ in range(100)]

c = dict.fromkeys(date, 0)

for x in date:

c[x] += 1

c2 = sorted(c.items(), key = lambda k:k[1])

c3 = c2[len(c2)-3:]

print(c3)

  1. date = [randint(0, 20) for _ in range(100)]:在0~20间,随机生产一个长度100的列表;
  2. dict.fromkeys(date, 0):以列表的值(不重复使用)做key,以0做值,生产字典;
  3. for x in date:

    c[x] += 1:统计随机list中各元素数量;

  4. c2 = sorted(c.items(), key = lambda k:k[1]):对统计的元素数量进行排序,以[(key,value)]形式;
  5. c3 = c2[len(c2)-3:]:返回最后3组数据,为目标结果;

方法二:使用collections下的Counter对象

from collections import Counter

from random import randint

date = [randint(0, 20) for _ in range(100)]

c1 = Counter(date)

c2 = c1.most_common(3)

print(c2)

  1. Counter(date):直接得到date中元素种类和数量,Counter({0: 7, 14: 7, 15: 7, 17: 7, 13: 6, 11: 6, 12: 5, 6: 5, 8: 5, 9: 5, 20: 4, 16: 4, 1: 4, 19: 4, 7: 4, 3: 4, 2: 4, 18: 3, 5: 3, 4: 3, 10: 3})
  2. c1.most_common(3),返回出现频率最多的3组数据;

例2:统计一片英文文章中,出现频度最高的10个单词,及出现次数

import re

txt = open(‘文件x‘).read()

c = Counter(re.split(‘\W+‘, txt))

c1 = c.most_common(10)

print(c1)

  1. txt = open(‘文件x‘).read():打开文件x;
  2. Counter(re.split(‘\W+‘, txt)):对txt数据进行分割后,得到一个list,并将list内元素种类和数量进行统计;
  3. c.most_common(10):将字典c1内数量最多的10个元素;

原文地址:https://www.cnblogs.com/volcao/p/8727455.html

时间: 2024-10-07 02:29:12

问题3:如何统计序列中元素的出现频度的相关文章

python学习--统计序列中元素出现的频度(次数)

例如有一个列表 l=[1,1,-1,2,3,22,34,32,2,-3,34,22,-5] 统计列表中每个元素出现的多少次 方式一: 先把列表变成一个字典dict,字典的key对应列表中的每一个元素,value代表每个元素出现的次数 d=dict.fromkeys(l,0)#两个参数,第一个参数为对应的列表,第二个参数设置dict的默认value=0. 然后,遍历列表中每一个元素,dict中碰到该元素,value就加1. for x in l: d[l]+=1 print(d) 方式二: 利用集

统计序列中元素出现的频度

案例1: 随机序列[1,2,3,4,44,2,3,8...]中,找出次数出现最高的3个元素,并统计他们出现的次数. # eg_v1 from random import randint data = [randint(1, 20) for _ in range(30)] print(data) # [19, 15, 4, 18, 18, 7, 18, 13, 18, 20, 18, 3, 5, 6, 7, 19, 2, 15, 3, 6, 13, 4, 14, 20, 1, 18, 13, 2,

python_如何统计序列中元素

问题1: 随机数列[12,5,8,7,8,9,4,8,5,...] 中出现次数最高的3个元素,他们出现的次数 问题2: 对某英文文章的单词,进行词频统计,找出出现次数最搞得10个单词,他们出现的次数是多少? 上面问题都是以字典的形式保存结果 如何解决问题1? 方法1: #!/usr/bin/python3 from random import randint def count_seq(data): # 初始化统计结果字典,data中的key作为结果字典的key,0作为每个key的初始值 res

输入的数转化为二进制序列,并统计序列中1的个数

★输入的数转化为二进制序列,并统计序列中1的个数 描述:普通的模除取余后数直接除二的办法易于理解,但是对于输入的数只限于正数和零,对于负数则不适应,所以采用与后移位的方法以此来扩大数的输入范围. #include<stdio.h> int main() { int m,b,c,i; int count = 0; char a[32]; printf("请输入一个数:\n"); scanf("%d", &m); for (i = 0; i <

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

Python列表可以进行简单的统计,比如list的函数count()可以直接统计元素出现的次数. mylist = [2,2,2,2,2,2,3,3,3,3] myset = set(mylist) #删除列表中的重复元素   print myset    set([2, 3]) for item in myset: print mylist.count(item), " of ", item, " in list" 打印结果: 6 of 2 in list  #

取序列对象中元素出现的次数

取一个序列中元素出现的格式 方法一: from collections import Iterable def action(iterable): reslut = {} if not isinstance(iterable,Iterable): #判断对象是否是可迭代 raise TypeError('is not iterable') #如果不是手动触发异常 for item in iterable: #对对象进行迭代 if item in reslut.keys(): #把元素和元素出现的

顺序统计:寻找序列中第k小的数

最直观的解法,排序之后取下标为k的值即可. 但是此处采取的方法为类似快速排序分块的方法,利用一个支点将序列分为两个子序列(支点左边的值小于支点的值,支点右边大于等于支点的值). 如果支点下标等于k,则支点就是查找的值,如果支点的下标大于k,则在左子序列里继续寻找,如果支点下标小于k,则继续在支点右子序列里面继续寻找第(k-支点下标)小的值. c#实现算法如下: public class FindSpecialOrderElement<T> where T : IComparable<T&

[PY3]——找出一个序列中出现次数最多的元素/collections.Counter 类的用法

问题 怎样找出一个序列中出现次数最多的元素呢? 解决方案 collections.Counter 类就是专门为这类问题而设计的, 它甚至有一个有用的 most_common() 方法直接给了你答案 collections.Counter 类 1. most_common(n)统计top_n from collections import Counter words = [ 'look', 'into', 'my', 'eyes', 'look', 'into', 'my', 'eyes', 't

【python cookbook】【数据结构与算法】16.筛选序列中的元素

问题:提取出序列中的值或者根据某些标准对序列做删减 解决方案:列表推导式.生成器表达式.使用内建的filter()函数 1.列表推导式方法:存在一个潜在的缺点,如果输入数据非常大可能会产生一个庞大的结果,考虑到该问题,建议选择生成器表达式 # Examples of different ways to filter data mylist = [1, 4, -5, 10, -7, 2, 3, -1] print('mylist=',mylist) # 使用列表推导式 pos = [n for n