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+django实现文件上传
Jan 17 Python
python的random模块及加权随机算法的python实现方法
Jan 04 Python
基于python 字符编码的理解
Sep 02 Python
Python探索之修改Python搜索路径
Oct 25 Python
Python文件操作基本流程代码实例
Dec 11 Python
PyQt5实现简易计算器
May 30 Python
Pycharm中Python环境配置常见问题解析
Jan 16 Python
python实现飞机大战项目
Mar 11 Python
Python GUI编程学习笔记之tkinter事件绑定操作详解
Mar 30 Python
如何查看Django ORM执行的SQL语句的实现
Apr 20 Python
使用Python文件读写,自定义分隔符(custom delimiter)
Jul 05 Python
python进度条显示-tqmd模块的实现示例
Aug 23 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
Yii2针对指定url的生成及图片等的引入方法小结
2016/07/18 PHP
对于Laravel 5.5核心架构的深入理解
2018/02/22 PHP
实例讲解php实现多线程
2019/01/27 PHP
javascript获取鼠标位置部分的实例代码(兼容IE,FF)
2013/08/05 Javascript
让元素在网页中可拖动示例代码
2013/08/13 Javascript
JavaScript的事件代理和委托实例分析
2015/03/25 Javascript
javascript实现点击后变换按钮显示文字的方法
2015/05/13 Javascript
jQuery简单注册和禁用全局事件的方法
2016/07/25 Javascript
学习Javascript闭包(Closure)知识
2016/08/07 Javascript
jQuery的Cookie封装,与PHP交互的简单实现
2016/10/05 Javascript
element ui里dialog关闭后清除验证条件方法
2018/02/26 Javascript
javascript中toFixed()四舍五入使用方法详解
2018/09/28 Javascript
Vue开发之封装上传文件组件与用法示例
2019/04/25 Javascript
es6中比较有用的7个技巧小结
2019/07/12 Javascript
layer弹窗在键盘按回车将反复刷新的实现方法
2019/09/25 Javascript
Python缩进和冒号详解
2016/06/01 Python
python 简单备份文件脚本v1.0的实例
2017/11/06 Python
python调用staf自动化框架的方法
2018/12/26 Python
Python在OpenCV里实现极坐标变换功能
2019/09/02 Python
Python字符编码转码之GBK,UTF8互转
2020/02/09 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
2020/03/10 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
2020/09/21 Python
浅析HTML5页面元素及属性
2021/01/20 HTML / CSS
Crocs波兰官方商店:女鞋、男鞋、童鞋、洞洞鞋
2019/10/08 全球购物
德国在线香料制造商:Gewürzland
2020/03/10 全球购物
如何转换一个字符串到enum值
2014/04/12 面试题
介绍一下你对SOA的认识
2016/04/24 面试题
新学期校长寄语
2014/01/18 职场文书
校园活动宣传方案
2014/03/28 职场文书
环保项目建议书
2014/08/26 职场文书
2014年卫生工作总结
2014/11/27 职场文书
淮阳太昊陵导游词
2015/02/10 职场文书
英语演讲开场白
2015/05/29 职场文书
python爬不同图片分别保存在不同文件夹中的实现
2021/04/02 Python
使用feign服务调用添加Header参数
2021/06/23 Java/Android
Python os和os.path模块详情
2022/04/02 Python