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 从远程服务器下载东西的代码
Feb 10 Python
使用python将mdb数据库文件导入postgresql数据库示例
Feb 17 Python
python写的一个squid访问日志分析的小程序
Sep 17 Python
python实现批量获取指定文件夹下的所有文件的厂商信息
Sep 28 Python
在Python中如何传递任意数量的实参的示例代码
Mar 21 Python
检测python爬虫时是否代理ip伪装成功的方法
Jul 12 Python
Python for i in range ()用法详解
Sep 18 Python
python中if及if-else如何使用
Jun 02 Python
python自动化发送邮件实例讲解
Jan 04 Python
python中四舍五入的正确打开方式
Jan 18 Python
Python字符串对齐、删除字符串不需要的内容以及格式化打印字符
Jan 23 Python
Python OpenCV 图像平移的实现示例
Jun 04 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
用libtemplate实现静态网页生成
2006/10/09 PHP
一个基于PDO的数据库操作类
2011/03/24 PHP
PHP中几个常用的魔术常量
2012/02/23 PHP
PHP图片处理之图片背景、画布操作
2014/11/19 PHP
详解WordPress开发中过滤属性以及Sql语句的函数使用
2015/12/25 PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
2016/05/28 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
PHP htmlspecialchars_decode()函数用法讲解
2019/03/01 PHP
jQuery弹性滑动导航菜单实现思路及代码
2013/05/02 Javascript
javascript同页面多次调用弹出层具体实例代码
2013/08/16 Javascript
Event altKey,ctrlKey,shiftKey属性解析
2013/12/18 Javascript
jquery数组之存放checkbox全选值示例代码
2013/12/20 Javascript
js对象基础实例分析
2015/01/13 Javascript
JS实现的车标图片提示效果代码
2015/10/10 Javascript
Bootstrap显示与隐藏简单实现代码
2017/03/06 Javascript
详解plotly.js 绘图库入门使用教程
2018/02/23 Javascript
node.js遍历目录的方法示例
2018/08/01 Javascript
深入解析ES6中的promise
2018/11/08 Javascript
vue视图不更新情况详解
2019/05/16 Javascript
vue + axios get下载文件功能
2019/09/25 Javascript
typescript配置alias的详细步骤
2020/08/12 Javascript
[03:48]大碗DOTA
2019/07/25 DOTA
python实现三次样条插值
2018/12/17 Python
使用Python和Prometheus跟踪天气的使用方法
2019/05/06 Python
Django admin禁用编辑链接和添加删除操作详解
2019/11/15 Python
python paramiko远程服务器终端操作过程解析
2019/12/14 Python
使用Python制作缩放自如的圣诞老人(圣诞树)
2019/12/25 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
2020/05/11 Python
Django3中的自定义用户模型实例详解
2020/08/23 Python
HTML5和CSS3实例教程总结(推荐)
2016/07/18 HTML / CSS
HTML5新增form控件和表单属性实例代码详解
2019/05/15 HTML / CSS
考试作弊被抓检讨书
2014/01/10 职场文书
车辆年检委托书范本
2014/10/14 职场文书
学校党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
2015年推广普通话演讲稿
2015/03/20 职场文书
军训阅兵新闻稿
2015/07/17 职场文书