Python函数式编程解决单词中字符频统计问题

原创 2017年08月29日 00:39:03

就是输入一个单词比如“science”,最后返还的结果是[ 'c','e'], 2/7。大意就是在这个单词中一共有两个字母重复的频率最高,分别是c和e,这个highest relative frequency是2/7


其实达到基本要求只要一行就可以实现:

>>> func=lambda w: '{0},{1[0]}/{2}'.format(*zip(*filter(lambda x:x[1]>1, __import__('collections').Counter(word).most_common())),len(w))
>>> func('science')
"('c', 'e'),2/7"
>>> func('protocol')
"('o',),3/8"
>>> 

更为完善一些的写法是下面这样的:


#coding=utf-8

from collections import Counter

def freq(word):
    counter = Counter(word).most_common()
    freq_chars = counter[0:1] + list(filter(lambda x: x[1]>1, counter[1:]))   
    return '{0} => {1},{2[0]}/{3}'.format(word,*zip(*freq_chars),len(word))

test_cases = 'science protocol word c collections 0 '.split()
print('\n'.join(map(freq, test_cases)))


结果:

Python 3.6.2 (v3.6.2:5fd33b5, Jul  8 2017, 04:57:36) [MSC v.1900 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> 
science => ('c', 'e'),2/7
protocol => ('o',),3/8
word => ('w',),1/4
c => ('c',),1/1
collections => ('c', 'o', 'l'),2/11
0 => ('0',),1/1
>>> 



python 统计文本文件中单词出现的个数

如题: #!/usr/bin/env python # encoding: utf-8 import re with open('a.txt', 'r') as f: dictResul...
  • u011085172
  • u011085172
  • 2017年04月25日 17:36
  • 1963

NOI 26:n-gram串频统计

26:n-gram串频统计 总时间限制: 1000ms 内存限制: 65536kB 描述 在文本分析中常用到n-gram串频统计方法,即,统计相邻的n个单元(如单词、汉字、或者字符)在...
  • Xuan_James
  • Xuan_James
  • 2016年03月21日 12:40
  • 357

Python(2.7.x)实现简单的单词频数统计

1.  # encoding: utf-8 import re from sys import argv # 将文本分割成单词列表 def split_str(text): return re...
  • huey2672
  • huey2672
  • 2014年09月05日 17:15
  • 778

Hadoop:使用原生python编写MapReduce来统计文本文件中所有单词出现的频率功能

Python编写的MapReduce程序——统计文本文件中所有单词出现的频率功能。
  • helloxiaozhe
  • helloxiaozhe
  • 2017年10月24日 16:57
  • 201

使用python统计出txt文档中含有某个单词的个数

自己初步想到这种程度,如果某个大牛看到,给我优化下程序,最后各种情况都能考虑到的,包括含有标点符号,特殊字符,异常处理等等。谢谢啦..... def main():     word = ...
  • junli_chen
  • junli_chen
  • 2015年10月12日 19:12
  • 2695

PAT循环-06. 统计一行文本的单词个数(15)

本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。 输入格式: 输入给出一行字符。 输出格式: 在一行中...
  • u011415955
  • u011415955
  • 2014年07月06日 20:05
  • 1307

Python实现统计文本当中单词的数量,

这是阿里巴巴2016年的一道面试题: 统计英文文章中单词出现的次数,并且输出出现次数的前10个单词 文本如下: Accessing Text from the Web and from Disk ...
  • qq_31518899
  • qq_31518899
  • 2017年08月11日 12:40
  • 1128

Python实现计算一段文本中每个单词出现的次数

看实验楼的课程,有一个小练习,做了一下。要求用Python实现计算一段文本中每个单词出现的次数。sentence = 'hello world nihao world hey hello java w...
  • Yeoman92
  • Yeoman92
  • 2017年02月22日 01:14
  • 3726

输入一行字符,统计其中有多少单词,单词之间用空格隔开

问题描述:   输入一行字符,统计其中有多少单词,单词之间用空格隔开 解题思路: 判断单词是否出现,可以用空格的出现来判断(连续的若干空格看做成一个),若当前字符为空格,表明word未出现,...
  • ZongYinHu
  • ZongYinHu
  • 2015年04月11日 10:12
  • 2200

输入一行字符,统计单词个数

#include int main() { char string[81]; int i; int num=0;//统计单词个数 int word=0;//word=0表示未出现新单词;Wor...
  • u012110719
  • u012110719
  • 2014年11月19日 21:50
  • 2465
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python函数式编程解决单词中字符频统计问题
举报原因:
原因补充:

(最多只允许输入30个字)