嵩天老师的零基础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 ...
随机推荐
- Java 反射机制详解(下)
续:Java 反射机制详解(上) 三.怎么使用反射 想要使用反射机制,就必须要先获取到该类的字节码文件对象(.class),通过字节码文件对象,就能够通过该类中的方法获取到我们想要的所有信息(方法,属 ...
- 分布式集群环境下,如何实现session共享二(项目开发)
在上一篇分布式集群环境下,如何实现session共享一(应用场景)中,介绍了在分布式集群下,需要实现session共享的应用场景.并且最后留下了一个问题:在集群环境下,如何实现session的共享呢? ...
- Two Flowers CodeChef - TWOFL
https://vjudge.net/problem/CodeChef-TWOFL 先把颜色相同的合并成一个点,建好图,枚举要取的两种颜色(根据图中所有边决定哪些组合要枚举)即可 错误记录: 1.写了 ...
- 条形码问题 dp+求某个序列在某种排列中的序号的方法
题目 条形码是一种由亮条(Light Bar)和暗条(Dark Bar)交替出现且以暗条为起头的符号,每条都占有若干个单位宽.图33-1给出了一个含有4个条的条形码,它延续了1+2+3+1=7单位的宽 ...
- [在读]functional javascript
讲javascript函数化编程的一本书,逛淘宝正好看到有一家卖英文书的,顺手就买了,目前搁置.
- HTML5实现页面自动跳转
初学H5,书上说的是<meta http-equiv="refresh" content="5“ url=”./error.html"/>这样可以实 ...
- Unity Mesh 初体验
什么是Mesh Mesh是Unity中的一个组件,称为网格组件.通俗的讲,Mesh是指模型的网格,3D模型是由多边形拼接而成,而一个复杂的多边形,实际上是由多个三角面拼接而成.所以一个3D模型的表面是 ...
- General mistakes in parallel computing
这是2013年写的一篇旧文,放在gegahost.net上面 http://raison.gegahost.net/?p=97 March 11, 2013 General mistakes in ...
- COGS 1743. 忠诚
★ 输入文件:faithful.in 输出文件:faithful.out 简单对比时间限制:1 s 内存限制:256 MB [题目描述] 老管家是一个聪明能干的人.他为财主工作了整整1 ...
- hdu5792 World is Exploding(多校第五场)树状数组求逆序对 离散化
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=5792 题目描述:给你n个值,每个值用A[i]表示,然后问你能否找到多少组(a,b,c,d)四个编号,四 ...