嵩天老师的零基础Python笔记:https://www.bilibili.com/video/av15123607/?from=search&seid=10211084839195730432#page=25 中的42-45讲 {字典}
#coding=gbk
#嵩天老师的零基础Python笔记:https://www.bilibili.com/video/av15123607/?from=search&seid=10211084839195730432#page=25 中的42-45讲 {字典}
#字典:针对非序列集合而提供的一种数据类型
# 字典是无序的!!!!!
#字典类型与序列类型的区别:
# 存取和访问方式不同
# 键类型不同,序列类型只能用数字类型的键,字典类型可以用其它对象作为键,如数字,字符串,元组等。
# 序列类型有序,字典类型无序
# 序列类型通过地址映射到值,字典中的键直接映射到值
#
#字典的操作
#为字典增加一项:dictionaryName[key] = value
#访问字典中的值:dictionaryName[key]返回键key对应的值value,若键不存在,则报错
#删除字典中的一项:del dictionaryName[key]
#字典的遍历:for key in dictionaryName:
# print(key + ":" + str(dictionaryName[key]))
#遍历字典的键:for key in dictionaryName.keys():print(key)
#遍历字典的值:for value in dictionaryName.values():print(value)
#遍历字典的项:for item in dictionaryName.items():print(item)
#遍历字典的键值:for item,value in dictionaryName.items():print(item,value)
#
#是否一个键在字典中用in not in指令
#字典的标准操作符:
#-,<, >, <=, >=, ==, !=, and, or, not
#
#字典方法
#keys():tuple 返回一个包含字典所有key的列表
#values():tuple 返回一个包含字典所有value的列表
#items():tuple 返回一个包含所有键值的列表
#clear():None 删除字典中的所有项目
#get(key):value 返回字典中key对应的值
#pop(key):value 删除并返回字典中Key对应的值
#update(字典) 将字典中的键值添加到字典中
"""
#英文文本文件词频统计程序
import turtle
#全局变量
#词频非排列显示个数
count = 10
data = []
words = []
yScale = 0.3 #y轴显示放大倍数可以根据词频统计数量count进行调整
xScale = 30 #x轴显示放大倍数可以根据词频统计数量count进行调整
def drawLine(t,x1,y1,x2,y2): #从点(x1,y1)到(x2,y2)绘制线段
t.penup()
t.goto(x1,y1)
t.pendown()
t.goto(x2,y2)
def drawText(t,x,y,text): #在坐标(x,y)处写文字
t.penup()
t.goto(x,y)
t.pendown()
t.write(text)
def drawGraph(t): #绘制x/y轴线
drawLine(t,0,0,360,0)
drawLine(t,0,300,0,0)
for x in range(count):
x += 1 #向右移一位,为了不画在原点上
drawText(t, x*xScale-4, -20, (words[x-1]))
drawText(t, x*xScale-4, data[x-1]*yScale+10, data[x-1])
drawBar(t)
def drawRectangle(t, x, y):
x = x*xScale
y = y*yScale #放大倍数显示
drawLine(t, x-5, 0, x-5, y)
drawLine(t, x-5, y, x+5, y)
drawLine(t, x+5, y, x+5, 0)
drawLine(t, x+5, 0, x-5, 0)
def drawBar(t):
for i in range(count):
drawRectangle(t, i+1, data[i])
def processLine(line, wordCounts): #对文本的每一行计算词频的函数
#用空格替换标点符号
line = replacePunctuations(line)
#从每一行获取每一个词
words = line.split()
for word in words:
if word in wordCounts:
wordCounts[word] += 1
else:
wordCounts[word] = 1
#空格替换标点的函数
def replacePunctuations(line):
for ch in line:
if ch in "~!@#$%^&*()-_+=[]{}\|;:'""<>,./?":
line = line.replace(ch, '')
return line
def main():
filename = input("请输入一个英文编写的文本文件: ").strip()
infile = open(filename, 'r')
#建立用于计算词频的空字典
wordCounts = {}
for line in infile:
processLine(line.lower(), wordCounts)
#从字典中获取数据对
pairs = list(wordCounts.items())
#列表中的数据对交换位置,数据对排序
items = [[x, y] for (y,x) in pairs]
items.sort()
#输出count数量的词频结果
for i in range(len(items)-1, len(items)-count-1, -1):
print(items[i][1] + "\t" + str(items[i][0]))
data.append(items[i][0])
words.append(items[i][1])
#根据词频结果绘制柱状图
turtle.title("词频统计结果柱状图")
turtle.setup(900, 750, 0, 0)
t = turtle.Turtle()
t.hideturtle()
t.width(3)
drawGraph(t)
#调用main()函数
if __name__ == '__main__':
main()
main()
"""
ftele1 = open(r'C:\Users\fengbo\Desktop\电话1106.txt','rb')
ftele2 = open(r'C:\Users\fengbo\Desktop\邮箱1106.txt','rb')
ftele1.readline() #跳过第一行
ftele2.readline() #跳过第一行
lines1 = ftele1.readlines()
lines2 = ftele2.readlines()
dic1 = {}
dic2 = {}
for line in lines1:
elements = line.split()
dic1[elements[0]] = str(elements[1].decode('gbk'))
for line in lines2:
elements = line.split()
dic2[elements[0]] = str(elements[1].decode('gbk'))
#电话邮箱合并程序
lines = []
lines.append('姓名\t 电话 \t 邮箱\n')
for key in dic1:
s = ''
if key in dic2.keys():
s = '\t'.join([str(key.decode('gbk')), dic1[key], dic2[key]])
s += '\n'
else:
s = '\t'.join([str(key.decode('gbk')), dic1[key], str(' ----- ')])
s += '\n'
lines.append(s)
for key in dic2:
s = ''
if key not in dic1.keys():
s = '\t'.join([str(key.decode('gbk')), str(' ----- '), dic2[key]])
s += '\n'
lines.append(s)
ftele3 = open(r'C:\Users\fengbo\Desktop\电话邮箱1106.txt', 'w')
ftele3.writelines(lines)
ftele3.close()
ftele2.close()
ftele1.close()
嵩天老师的零基础Python笔记:https://www.bilibili.com/video/av15123607/?from=search&seid=10211084839195730432#page=25 中的42-45讲 {字典}的更多相关文章
- 嵩天老师的零基础Python笔记:https://www.bilibili.com/video/av13570243/?from=search&seid=15873837810484552531 中的15-23讲
#coding=gbk#嵩天老师的零基础Python笔记:https://www.bilibili.com/video/av13570243/?from=search&seid=1587383 ...
- 嵩天老师的零基础Python笔记:https://www.bilibili.com/video/av13570243/?from=search&seid=15873837810484552531 中的1-14讲
#coding=gbk#嵩天老师的零基础Python笔记:https://www.bilibili.com/video/av13570243/?from=search&seid=1587383 ...
- 【雕爷学编程】零基础Python(01)---“投机取巧”的三条途径
从3月13日报名尝试上网课学习(4天课8.9元),开始接触Python(中文发音“派森”),到今天有一星期了.这两天广泛搜索了一下相关的学习途径,本着“投机取巧”的出发点,居然小有心得,这里一并分享出 ...
- 092 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 02 static关键字(中)
092 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 零基础Python应该怎样学习呢?(附视频教程)
Python应该怎样学习呢? 阶段一:适合自己的学习方式 对于零基础的初学者来说,最迷茫的是不知道怎样开始学习?那这里小编建议可以采用视频+书籍的方式进行学习.看视频学习可以让你迅速掌握编程的基础语法 ...
- CSS零基础学习笔记.
酸菜记 之 CSS的零基础. 这篇是我自己从零基础学习CSS的笔记加理解总结归纳的,如有不对的地方,请留言指教, 学前了解: CSS中字母是不分大小写的; CSS文件可以使用在各种程序文件中(如:PH ...
- 零基础Python接口测试教程
目录 一.Python基础 Python简介.环境搭建及包管理 Python基本语法 基本数据类型(6种) 条件/循环 文件读写(文本文件) 函数/类 模块/包 常见算法 二.接口测试快速实践 简单接 ...
- Spark (Python版) 零基础学习笔记(一)—— 快速入门
由于Scala才刚刚开始学习,还是对python更为熟悉,因此在这记录一下自己的学习过程,主要内容来自于spark的官方帮助文档,这一节的地址为: http://spark.apache.org/do ...
- Spark (Python版) 零基础学习笔记(二)—— Spark Transformations总结及举例
1. map(func) 将func函数作用到数据集的每个元素,生成一个新的分布式的数据集并返回 >>> a = sc.parallelize(('a', 'b', 'c')) &g ...
随机推荐
- Mantis优化改造(功能篇)
共分为两篇,功能篇和技术篇. 时间大约是2016年冬天. 考虑搭一个用于Bug管理和追踪的系统. 综合比较下,选择了小巧的开源工具,Mantis. 在源码基础上,做代码修改,完成了定制版的优化改造. ...
- iptables 使用总结
Linux 系统的防火墙功能是由内核实现的 2.0 版内核中,包过滤机制是 ipfw,管理工具是 ipfwadm 2.2 版内核中,包过滤机制是 ipchain,管理工具是 ipchains 2.4 ...
- safari 日期显示NAN
解决方案: 1.服务器端将时间转换为时间戳,前端再进行处理,问题解决. fastjson,JSON.toJSONString() 自动将时间字段转换为时间戳类型,然后传到前端. @RequestMap ...
- jquery $.trim()方法的介绍
http://www.jb51.net/article/50282.htm
- bzoj 4821 [Sdoi2017]相关分析
题面 https://www.lydsy.com/JudgeOnline/problem.php?id=4821 题解 做法显然 就是维护一颗线段树 里面装4个东西 区间x的和 区间y的和 区间$x^ ...
- Codeforces Round #542(Div. 2) C.Connect
链接:https://codeforces.com/contest/1130/problem/C 题意: 给一个n*n的图,0表示地面,1表示水,给出起点和终点, 现要从起点到达终点,有一次在两个坐标 ...
- Lucky Array Codeforces - 121E && Bear and Bad Powers of 42 Codeforces - 679E
http://codeforces.com/contest/121/problem/E 话说这题貌似暴力可A啊... 正解是想出来了,结果重构代码,调了不知道多久才A 错误记录: 1.线段树搞混num ...
- RHEL 6.5----CDN(lumanger)
主机名 IP 服务 master 192.168.30.130 CDN(LuManager) slave 192.168.30.131 DNS 软件安装包下载地址及安装方法 http:// ...
- re正则表达式公式讲解5
1.refullmatch() 完全匹配字符串则返回object,否则返回None import re s = "max@123uyt146" print(re.fullmatch ...
- poj1724 ROADS
题意: N个城市,编号1到N.城市间有R条单向道路.每条道路连接两个城市,有长度和过路费两个属性.Bob只有K块钱,他想从城市1走到城市N.问最短共需要走多长的路.如果到不了N,输出-12<=N ...