三种方法实现统计一个句子中的字母数 (setdefault、defaultdict的使用)

最常见的方法,构建一个字典,对于句子中出现的字母,如果是首次出现,则值置为1,后后面再出现就加1.

def letter_frequency_1(sentence):
    frequencies={}
    for letter in sentence:
        if letter not in frequencies:
            frequencies[letter]=1
        else:
            frequencies[letter]+=1
    return frequencies

对于setdefault方法,如果键在字典中,该方法的行为如同get方法:返回该健的值。相反,如果键不在字典中,它会设置该键的值,然后返回字典中该键的值。

def letter_frequency_2(sentence):
    frequencies={}
    for letter in sentence:
        frequency=frequencies.setdefault(letter,0)
        frequencies[letter]=frequency+1
    return frequencies
下面的代码中,如果字母在defaultdict中不存在,则访问它时会返回0,之后每找到一个则会加1.
def letter_frequency_3(sentence):
    frequencies=defaultdict(int)
    for letter in sentence:
        frequencies[letter]+=1
    return frequencies
时间: 2024-10-20 23:49:00

三种方法实现统计一个句子中的字母数 (setdefault、defaultdict的使用)的相关文章

统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数,其他字符出现的次数。

/** * A:案例演示 * 需求:统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数,其他字符出现的次数. * [email protected]#$%^ * 分析:字符串是有字符组成的,而字符的值都是有范围的,通过范围来判断是否包含该字符 * 如果包含就让计数器变量自增 */ public static void main(String[] args) { String s = "[email protected]#$%^"; int big = 0; int smal

三种方法实现从“一个(组)查询过程中返回两个表的查询结果”

还记得開始做机房的时候,遇到了要从一个函数中返回两个表的查询结果.当时的解决方法非常"冲动"也非常"无拘无束",直接在实体类里边加入了其它表的实体,效果是达到了,但总认为不伦不类. 如今介绍三种解决上述问题的方法(代码为VB.net.系统使用三层架构). 题设要求:如果我如今要从卡表和学生表里返回查询信息(卡表的comment,money,status和学生表的所有信息),卡表和学生表例如以下: 图一  学生表 图二    卡表 方法一:视图. 比較简单,相信这样的

java小知识点(一)---Java中获取键盘输入值的三种方法

Java中获取键盘输入值的三种方法   程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值的现成函数!Java没有提供这样的函数也不代表遇到这种情况我们就束手无策,请你看以下三种解决方法吧:   以下将列出几种方法:   方法一:从控制台接收一个字符,然后将其打印出来   publicstatic void main(String [] args) throws IOException{   Sys

js(20140517)在JS方法中返回多个值的三种方法

在JS方法中返回多个值的三种方法 在使用JS编程中,有时需要在一个方法返回两个个或两个以上的数据,用下面的几种方法都可以实现: 1 使用数组的方式,如下: <html> <head> <title>JS函数返回多个值--oec2003</title> </head> <body> <input type="button" onclick="getNames()" value="t

(转)在网页中JS函数自动执行常用三种方法

原文:http://blog.sina.com.cn/s/blog_6f6b4c3c0100nxx8.html 在网页中JS函数自动执行常用三种方法 在网页中JS函数自动执行常用三种方法 在HTML中的Head区域中,有如下函数: <SCRIPT   LANGUAGE="JavaScript">   functionn MyAutoRun() {   //以下是您的函数的代码,请自行修改先! alert("函数自动执行哦!");   } </SCR

在网页中JS函数自动执行常用三种方法

在网页中JS函数自动执行常用三种方法 在HTML中的Head区域中,有如下函数: <SCRIPT   LANGUAGE="JavaScript">   functionn MyAutoRun() {   //以下是您的函数的代码,请自行修改先! alert("函数自动执行哦!");   }  </SCRIPT> 下面,我们就针对上面的函数,让其在网页载入的时候自动运行! ①第一种方法 将如上代码改为: <SCRIPT   LANGUAG

JAVA之线程同步的三种方法

最近接触到一个图片加载的项目,其中有声明到的线程池等资源需要在系统中线程共享,所以就去研究了一下线程同步的知识,总结了三种常用的线程同步的方法,特来与大家分享一下.这三种方法分别是:synchronized代码段.synchronized修饰方法/类.ThreadLocal本地线程变量. 我们通过一个例子来表现这三种方法:一张银行卡里面有300块钱,15个线程从这张银行卡中取钱,每个线程取一次且每次取20块钱:当当前余额不足100元时,则向账户中汇款20元.三种方法每种方法都有5个线程.我们预期

EntityFramework 更新数据库字段的三种方法

例: 实体类: public class TestDbContext : DbContext { public DbSet<Test> Tests { get; set; } public TestDbContext() : base() { } } public class Test { public long ID { get; set; } public string Name { get; set; } public string Email { get; set; } public

写一个函数返回参数二进制中 1 的个数(三种方法)

1.运用了除法,取余方式递推出结构2.运用右移符(>>)运算3.利用算术与(&)运算 三种方法效率越来越高,减少成本 #include<stdio.h> int Number1(int n) { int k; int count=0; while (n > 0) { k = n % 2; n /= 2; if (1 == k) { count++; } } return count; } int Number2(int n) { int count = 0; whil