python字典操作实例详解


Posted in Python onNovember 16, 2017

本文实例为大家分享了python字典操作实例的具体代码,供大家参考,具体内容如下

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import turtle
 
##全局变量##
#词频排列显示个数
count = 10
#单词频率数组-作为y轴数据
data = []
#单词数组-作为x轴数据
words = []
#y轴显示放大倍数-可以根据词频数量进行调节
yScale = 6
#x轴显示放大倍数-可以根据count数量进行调节
xScale = 30
 
################# Turtle Start #################### 
#从点(x1,y1)到(x2,y2)绘制线段
def drawLine(t, x1, y1, x2, y2):
  t.penup()
  t.goto (x1, y1)
  t.pendown()
  t.goto (x2, y2)
 
# 在坐标(x,y)处写文字
def drawText(t, x, y, text):
  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)
 
  #x轴: 坐标及描述
  for x in range(count):
    x=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])  
################# Turtle End ####################
 
     
#对文本的每一行计算词频的函数
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("enter a filename:").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])
     
  infile.close()
   
  #根据词频结果绘制柱状图
  turtle.title('词频结果柱状图')
  turtle.setup(900, 750, 0, 0)
  t = turtle.Turtle()
  t.hideturtle()
  t.width(3)
  drawGraph(t)
  turtle.done()
     
#调用main()函数
if __name__ == '__main__':
  main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中lambda的用法及其与def的区别解析
Jul 28 Python
Python3实现从文件中读取指定行的方法
May 22 Python
深入理解Python中字典的键的使用
Aug 19 Python
asyncio 的 coroutine对象 与 Future对象使用指南
Sep 11 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
Sep 21 Python
python自动查询12306余票并发送邮箱提醒脚本
May 21 Python
python3 爬取图片的实例代码
Nov 06 Python
Python中xml和json格式相互转换操作示例
Dec 05 Python
使用Tensorflow实现可视化中间层和卷积层
Jan 24 Python
Python基于xlrd模块处理合并单元格
Jul 28 Python
python 读取yaml文件的两种方法(在unittest中使用)
Dec 01 Python
教你使用Python获取QQ音乐某个歌手的歌单
Apr 03 Python
python实现报表自动化详解
Nov 16 #Python
TF-IDF算法解析与Python实现方法详解
Nov 16 #Python
疯狂上涨的Python 开发者应从2.x还是3.x着手?
Nov 16 #Python
Python自然语言处理之词干,词形与最大匹配算法代码详解
Nov 16 #Python
用不到50行的Python代码构建最小的区块链
Nov 16 #Python
python内置函数:lambda、map、filter简单介绍
Nov 16 #Python
Python编程使用NLTK进行自然语言处理详解
Nov 16 #Python
You might like
PHP学习笔记 (1) 环境配置与代码调试
2011/06/19 PHP
探讨php中防止SQL注入最好的方法是什么
2013/06/10 PHP
nginx+thinkphp下解决不支持pathinfo模式
2015/07/01 PHP
JavaScript 使用技巧精萃(.net html
2009/04/25 Javascript
JQuery 遮罩层实现(mask)实现代码
2010/01/09 Javascript
javascript学习总结之js使用技巧
2015/09/02 Javascript
关于angularJs指令的Scope(作用域)介绍
2016/10/25 Javascript
一个炫酷的Bootstrap导航菜单
2016/12/28 Javascript
JavaScript 动态三角函数实例详解
2017/01/08 Javascript
详解webpack 如何集成第三方js库
2017/06/29 Javascript
Node.js利用console输出日志文件的方法示例
2018/04/27 Javascript
VUE v-for循环中每个item节点动态绑定不同函数的实例
2018/09/26 Javascript
vue基础之事件v-onclick=&quot;函数&quot;用法示例
2019/03/11 Javascript
微信小程序生成分享海报方法(附带二维码生成)
2019/03/29 Javascript
详解js创建对象的几种方法及继承
2019/04/12 Javascript
js判断非127开头的IP地址的实例代码
2020/01/05 Javascript
解决vue初始化项目一直停在downloading template的问题
2020/11/09 Javascript
vuex的数据渲染与修改浅析
2020/11/26 Vue.js
详解Django中的过滤器
2015/07/16 Python
python微信跳一跳系列之棋子定位颜色识别
2018/02/26 Python
matplotlib 输出保存指定尺寸的图片方法
2018/05/24 Python
django传值给模板, 再用JS接收并进行操作的实例
2018/05/28 Python
Python3随机漫步生成数据并绘制
2018/08/27 Python
Python网页正文转换语音文件的操作方法
2018/12/09 Python
pip install python 快速安装模块的教程图解
2019/10/08 Python
Python pathlib模块使用方法及实例解析
2020/10/05 Python
Flask中jinja2的继承实现方法及实例
2021/03/03 Python
CSS3 三维变形实现立体方块特效源码
2016/12/15 HTML / CSS
Html5原创俄罗斯方块(基于canvas)
2019/01/07 HTML / CSS
Tommy Hilfiger美国官网:美国高端休闲领导品牌
2019/01/14 全球购物
交通专业个人自荐信格式
2013/09/23 职场文书
大学本科毕业生求职信范文
2013/12/18 职场文书
信息科学与技术专业求职信范文
2014/02/20 职场文书
2015年防汛工作总结
2015/05/15 职场文书
幼儿园六一儿童节主持词
2015/06/30 职场文书
Python 实现Mac 屏幕截图详解
2021/10/05 Python