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有证书的加密解密实现方法
Nov 19 Python
Python实现TCP/IP协议下的端口转发及重定向示例
Jun 14 Python
一文总结学习Python的14张思维导图
Oct 17 Python
详解tensorflow实现迁移学习实例
Feb 10 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
Apr 11 Python
一行Python代码制作动态二维码的实现
Sep 09 Python
python 画函数曲线示例
Dec 04 Python
python飞机大战pygame游戏背景设计详解
Dec 17 Python
python中property和setter装饰器用法
Dec 19 Python
Django框架教程之中间件MiddleWare浅析
Dec 29 Python
在keras下实现多个模型的融合方式
May 23 Python
Python工程师必考的6个经典面试题
Jun 28 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
4.与数据库的连接
2006/10/09 PHP
基于PHP开发中的安全防范知识详解
2013/06/06 PHP
PHP图片自动裁切应付不同尺寸的显示
2014/10/16 PHP
PHP curl伪造IP地址和header信息代码实例
2015/04/27 PHP
php阿拉伯数字转中文人民币大写
2015/12/21 PHP
php基于单例模式封装mysql类完整实例
2016/10/18 PHP
php 静态属性和静态方法区别详解
2017/04/09 PHP
ThinkPHP5+Layui实现图片上传加预览功能
2018/08/17 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
PHP 实现缩略图
2021/03/09 PHP
jQuery入门问答 整理的几个常见的初学者问题
2010/02/22 Javascript
JS/jQuery实现默认显示部分文字点击按钮显示全部内容
2013/05/13 Javascript
js浮点数精确计算(加、减、乘、除)
2013/12/26 Javascript
jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
2016/04/18 Javascript
JavaScript:Date类型全面解析
2016/05/19 Javascript
分享jQuery封装好的一些常用操作
2016/07/28 Javascript
vue使用prop可以渲染但是打印台报错的解决方式
2019/11/13 Javascript
vue 遮罩层阻止默认滚动事件操作
2020/07/28 Javascript
Python调用C语言开发的共享库方法实例
2015/03/18 Python
Unicode和Python的中文处理
2017/03/19 Python
基于Python对象引用、可变性和垃圾回收详解
2017/08/21 Python
python 给DataFrame增加index行名和columns列名的实现方法
2018/06/08 Python
Pytorch 使用CNN图像分类的实现
2020/06/16 Python
细说NumPy数组的四种乘法的使用
2020/12/18 Python
使用Python+Appuim 清理微信的方法
2021/01/26 Python
柏林通行证:Berlin Pass
2018/04/11 全球购物
Opodo意大利:欧洲市场上领先的在线旅行社
2019/10/24 全球购物
机械制造专业个人的自我评价
2013/12/28 职场文书
本科毕业生专业自荐书范文
2014/02/05 职场文书
高中生期中考试失利检讨书
2014/10/23 职场文书
婚前协议书范本
2014/10/27 职场文书
用基于python的appium爬取b站直播消费记录
2021/04/17 Python
Python使用random模块实现掷骰子游戏的示例代码
2021/04/29 Python
MySQL通过binlog恢复数据
2021/05/27 MySQL
Java 数据结构七大排序使用分析
2022/04/02 Java/Android
基于redis+lua进行限流的方法
2022/07/23 Redis