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对象及面向对象技术详解
Jul 19 Python
解决Python字典写入文件出行首行有空格的问题
Sep 27 Python
Python设计模式之MVC模式简单示例
Jan 10 Python
python中requests和https使用简单示例
Jan 18 Python
python学生管理系统
Jan 30 Python
python实现简单日期工具类
Apr 24 Python
django-filter和普通查询的例子
Aug 12 Python
使用celery和Django处理异步任务的流程分析
Feb 19 Python
如何理解Python中的变量
Jun 01 Python
使用Python画了一棵圣诞树的实例代码
Nov 27 Python
Python Django 后台管理之后台模型属性详解
Apr 25 Python
Python编写冷笑话生成器
Apr 20 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相当简单的分页类
2008/10/02 PHP
JS延迟加载(setTimeout) JS最后加载
2010/07/15 Javascript
js+div实现图片滚动效果代码
2014/02/10 Javascript
Jquery插件编写简明教程
2014/03/25 Javascript
JavaScript中的Truthy和Falsy介绍
2015/01/01 Javascript
JavaScript中常见的字符串操作函数及用法汇总
2015/05/04 Javascript
JS实现自动变化的导航菜单效果代码
2015/09/09 Javascript
JS实现淡蓝色简洁竖向Tab点击切换效果
2015/10/06 Javascript
jquery实现可自动判断位置的弹出层效果代码
2015/10/12 Javascript
手机端实现Bootstrap简单图片轮播效果
2016/10/13 Javascript
实例解析Array和String方法
2016/12/14 Javascript
JS高级运动实例分析
2016/12/20 Javascript
angularjs数组判断是否含有某个元素的实例
2018/02/27 Javascript
详解webpack运行Babel教程
2018/06/13 Javascript
Auto.js自动收取自己和好友蚂蚁森林能量脚本
2018/06/28 Javascript
微信小程序实现聊天对话(文本、图片)功能
2018/07/06 Javascript
Vue2.2.0+新特性整理及注意事项
2018/08/22 Javascript
解决Vue.js由于延时显示了{{message}}引用界面的问题
2018/08/25 Javascript
微信小程序bindtap事件与冒泡阻止详解
2019/08/08 Javascript
vue实现拖拽进度条
2021/03/01 Vue.js
numpy排序与集合运算用法示例
2017/12/15 Python
python 猴子补丁(monkey patch)
2019/06/26 Python
阿里云ECS服务器部署django的方法
2019/08/29 Python
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
2019/11/01 Python
python3中的logging记录日志实现过程及封装成类的操作
2020/05/12 Python
如何在.net Winform里面显示PDF文档
2012/09/11 面试题
社会保险接收函
2014/01/12 职场文书
优秀中学生事迹材料
2014/01/31 职场文书
主管会计岗位责任制
2014/02/10 职场文书
主要负责人任命书
2014/06/06 职场文书
经典毕业生求职信
2014/07/12 职场文书
群众路线教育实践活动实施方案
2014/10/31 职场文书
公司聚餐通知
2015/04/22 职场文书
结婚幸福感言
2015/08/01 职场文书
关于k8s环境部署mysql主从的问题
2022/03/13 MySQL
Tomcat项目启动失败的原因和解决办法
2022/04/20 Servers