文件字符分布

描述

统计附件文件的小写字母a-z的字符分布,即出现a-z字符的数量,并输出结果。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

同时请输出文件一共包含的字符数量。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

注意输出格式,各元素之间用英文逗号(,)分隔。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

答案可能包含a-z共26个字符的分布,如果某个字符没有出现,则不显示,输出顺序a-z顺序。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

输入输出示例

仅格式示例,非最终答案。
‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

  输入 输出
示例 1  
共999字符,a:11,b:22,c:33,d:44,e:55

‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

#我的做法

fo = open("latex.log","r")  #打开文件
t =0
lt = {} #创建字典
for item in fo: #遍历fo
for j in item: #统计字符数量
t+=1
if j>='a'and j<='z':
lt[j] = lt.get(j,0)+1#用当前字符j索引字典,若在,次数+1;若不在,加到字典中,赋给当前值为0,+1
items = list(lt.items())#字典转换为列表
print("共{}字符".format(t),end = '')#不换行
items.sort(key=lambda x:x[0],reverse = False)#按第一维[0],以默认的从小到大方式排序,reverse = false 不反转
for item in items:
print(",{}:{}".format(item[0],item[1]),end = '')

 其中涉及的知识点

1,.get(<元素>,0)     以 lt.get ( j,0 ) +1为例

 对字典lt 索引其中的 j 元素对应的值。

1)若字典lt为空,此时函数的作用为检测并生成新元素,同时对新元素初始化为0,由于遇见了新元素,返回值+1

2)若字典lt不为空,当检测出新元素时遵从1),当再次遇见相同元素时,返回值+1

2,.sort(key=lambda x:x[0],reverse = False)

1)sort()   默认从小到大方式排序

2)key=lambda x:x[0]

x:x[ ]字母可随意修改,排序方式按括号中[ ]里面的维度进行排序

[0]按第一维,[2]按第三维

3)reverse()函数

列表类型操作函数,其结果是直接改变列表本身(节省空间),直接把原来的list改为反转后的列表,返回值为空(None),因此直接引用逆序输出

reverse = false 以默认的方式排序,不反转;reverse = true 反转

#参考答案

f = open("latex.log")
cc = 0
d = {}
for i in range(26):
d[chr(ord('a')+i)] = 0
for line in f:
for c in line:
d[c] = d.get(c, 0) + 1
cc += 1
print("共{}字符".format(cc), end="")
for i in range(26):
if d[chr(ord('a')+i)] != 0:
print(",{}:{}".format(chr(ord('a')+i), d[chr(ord('a')+i)]), end="")
#使用 ord('a')+i 配合 range()函数 可以遍历一个连续的字符表。

  

python-文件字符分布【get()函数与.sort(key=lambda x:x[0],reverse = False)】的更多相关文章

  1. python 文件和路径操作函数小结

    1: os.listdir(path) //path为目录 功能相当于在path目录下执行dir命令,返回为list类型 print os.listdir('..') 2: os.path.walk( ...

  2. python文件及路径管理函数

    glob模块 说明: 1.glob是python自己带的一个文件操作相关模块,用它可以查找符合自己目的的文件,就类似于Windows下的文件搜索, 支持通配符操作 *.?.[] 这三个通配符,*代表0 ...

  3. python文件之间变量和函数的 获取/调用 的方法

  4. python 小程序 查找最大的python文件

    使用os.path模块方法介绍 1. 扫描标准库目录     I 通过glob模块遍历一个目录下面的所有文件,glob接收shell中常用文件名模式语法:"?"代表任何单个字符,* ...

  5. python 常用的高阶函数

    前言 高阶函数指的是能接收函数作为参数的函数或类:python中有一些内置的高阶函数,在某些场合使用可以提高代码的效率. map() map函数可以把一个迭代对象转换成另一个可迭代对象,不过在pyth ...

  6. 『Python基础-14』匿名函数 `lambda`

    匿名函数和关键字lambda 匿名函数就是没有名称的函数,也就是不再使用def语句定义的函数 在Python中,如果要声匿名函数,则需要使用lambda关键字 使用lambda声明的匿名函数能接收任何 ...

  7. python记录_day14 内置函数二 迭代 二分法

    一.匿名函数 形式: lambda 形参:返回值 lambda表示的是匿名函数. 不需要用def来声明, 一句话就可以声明出一个函数.匿名函数不是说一定没名字,而是他们的名字统一称为“lambda”, ...

  8. day3--集合、文件操作、字符编码与转换、函数(递归,lambda,filter,map)、字典排序

    list1 = set([1, 2, 3, 4, 5, 6, 5, 5, 5])list2 = set([11, 2, 36, 'a', 5, 6, 5, 5, 5])list3 = set([1, ...

  9. Python文件与函数练习题

    练习题 文件处理相关 编码问题 请说明python2 与python3中的默认编码是什么? python2默认是ASCII码,python3默认是utf-8 为什么会出现中文乱码?你能列举出现乱码的情 ...

随机推荐

  1. Spark 1.5 to 2.1.X

    api差异参考官网地址:https://spark.apache.org/docs/2.1.1/sql-programming-guide.html#upgrading-from-spark-sql- ...

  2. 实战if-else 过多详解

    1.本文实例代码仅仅是俩个小例子. package com.example.demo.pattern.ifElse; import java.util.HashMap; import java.uti ...

  3. Docker之hello world

    Docker Hello World Docker 允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序. 输出Hello world runoob@runoob: ...

  4. 数据结构和算法(Golang实现)(8.1)基础知识-前言

    基础知识 学习数据结构和算法.我们要知道一些基础的知识. 一.什么是算法 算法(英文algorithm)这个词在中文里面博大精深,表示算账的方法,也可以表示运筹帷幄的计谋等.在计算机科技里,它表示什么 ...

  5. xshell使用记录

    1.rz---上传文件 2.ls----列出文件 3.chmod +x webbench_pro  -----赋予执行权限 4../webbench_pro----当前目录执行程序

  6. 使用Scanner接受用户键盘输入的值

    第一步导入Scanner import java.util.*; 第二步创建Scanner对象 Scanner input = new Scanner(System.in); 第二步创建Scanner ...

  7. Activity A 跳转到Activity B 生命周期

    又被生命周期折磨了一段时间,这次是被onPause 和 onStop 折磨了,一直认为Activity A 跳转到到 Activity B的生命周期是onPause(A),onStop(A),onCr ...

  8. 读写SQL脚本进行创建表、视图和存储过程

    一.按照先创建表.视图.存储过程的顺序创建: 二.导出脚本的时候注意:保存为ANSI文本,选项中:if not exists为true,防止覆盖:包含说明性标头为false;use database为 ...

  9. Python——详解__slots__,property和私有方法

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Python专题的第11篇文章,我们来聊聊面向对象的一些进阶使用. __slots__ 如果你看过github当中一些大牛的代码,你会 ...

  10. BUU刷题01

    [安洵杯 2019]easy_serialize_php 直接给了源代码 <?php $function = @$_GET['f']; function filter($img){ $filte ...