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将xml xsl文件生成html文件存储示例讲解
Dec 03 Python
举例讲解Django中数据模型访问外键值的方法
Jul 21 Python
Flask入门之上传文件到服务器的方法示例
Jul 18 Python
pandas通过索引进行排序的示例
Nov 16 Python
Python网络爬虫之爬取微博热搜
Apr 18 Python
python中的数据结构比较
May 13 Python
python小程序基于Jupyter实现天气查询的方法
Mar 27 Python
matplotlib 对坐标的控制,加图例注释的操作
Apr 17 Python
使用K.function()调试keras操作
Jun 17 Python
Python读取yaml文件的详细教程
Jul 21 Python
matplotlib部件之套索Lasso的使用
Feb 24 Python
Python爬取某拍短视频
Jun 11 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
在线短消息收发的程序,不用数据库
2006/10/09 PHP
基于PHP CURL用法的深入分析
2013/06/09 PHP
PHP实现查询两个数组中不同元素的方法
2016/02/23 PHP
WordPress伪静态规则设置代码实例
2020/12/10 PHP
JavaScript 检测浏览器和操作系统的脚本
2008/12/26 Javascript
JS/jQuery实现默认显示部分文字点击按钮显示全部内容
2013/05/13 Javascript
JS获取随机数函数可自定义最小值最大值
2014/05/08 Javascript
浅谈JavaScript字符串与数组
2015/06/03 Javascript
JS实现灵巧的下拉导航效果代码
2015/08/25 Javascript
jQuery添加和删除指定标签的方法
2015/12/16 Javascript
学习JavaScript设计模式之策略模式
2016/01/12 Javascript
Javascript OOP之面向对象
2016/07/31 Javascript
关于两个jQuery(js)特效冲突的bug的解决办法
2016/09/04 Javascript
vue.js获取数据库数据实例代码
2017/05/26 Javascript
jQuery 实现双击编辑表格功能
2017/06/19 jQuery
vue实现选项卡及选项卡切换效果
2018/04/24 Javascript
jquery插件开发模式实例详解
2019/07/20 jQuery
JS函数进阶之继承用法实例分析
2020/01/15 Javascript
JS代码优化的8点建议
2020/02/04 Javascript
Vue快速实现通用表单验证的方法
2020/02/24 Javascript
[01:13]2015国际邀请赛线下观战现场
2015/08/08 DOTA
[00:48]DOTA2国际邀请赛公开赛报名开始 扫码开启逐梦之旅
2018/06/06 DOTA
最近Python有点火? 给你7个学习它的理由!
2017/06/26 Python
Pyspider中给爬虫伪造随机请求头的实例
2018/05/07 Python
Genny意大利官网:意大利高级时装品牌
2020/04/15 全球购物
益模软件Java笔试题
2012/03/27 面试题
新课培训心得体会
2014/09/03 职场文书
处级干部反四风个人对照检查材料思想汇报
2014/09/27 职场文书
安全隐患整改报告
2014/11/06 职场文书
2014年学校财务工作总结
2014/12/06 职场文书
大学生在校表现评语
2014/12/31 职场文书
2015年大学生社会实践评语
2015/03/26 职场文书
CAD实训总结范文
2015/08/03 职场文书
2016小学教师读书心得体会
2016/01/13 职场文书
CentOS MySql8 远程连接实战
2022/04/19 MySQL
Java Spring读取和存储详细操作
2022/08/05 Java/Android