pickle 存放数据

将数据保存为文件是永久保存的唯一方式,而文档内部是以字符串形式进行存放的,如果我们需要保存的是一个包含很多数据甚至是类的实例化的复杂的列表、元组和字典等,将其以文本文档方式保存后,很难将其还原回去,而pickle的出现解决了这一难题,它的解决机制是这样的:所有的数据类型在电脑内本质上都是二进制的数字组成,如果能将这些列表、元组或者字典直接保存为二进制文件的格式,即实现了永久存储,且还可以直接通过unpickle的方式将其从二进制形式转换为相应的列表、元组或者字典类型。在这个模块里面有两个基本的内置函数可以实现上述过程:首先是dump()函数,将复杂的数据类型转换为一个二进制文件保存起来;其次是load()函数,将保存好的二进制文件恢复成相应的复杂数据类型。

保存和提取python运算完的结果

首先import pickle模块

定义一个字典:

  1. a_dict={'da':111,2:[23,1,4],'23':{1:2,'d':'sad'}}

首先打开一个file,后缀名用pickle代替即可,以二进制形式打开

  1. file=open('pickle_example.pickle','wb')

接着用dump,把a_dict放入到file中,并关闭文件

  1. pickle.dump(a_dict,file)
  2. file.close()

接着读取我们存储的文件

首先打开文件,打开方式为‘rb’,使用pickle的load下载内容,最后关闭文件

  1. file=open('pickle_example.pickle','rb')
  2. a_dict1=pickle.load(file)
  3. file.close()
  4. print(a_dict1)

运行结果如下所示:

上述过程可简化,使用with语句,不用考虑到关闭文件,只要运行完会自动将文件关闭

  1. with open('pickle_example.pickle','rb')as file:
  2. a_dict1=pickle.load(file)
  3. print(a_dict1)

写入也可以用with语句简化

set 找不同

使用set可以去除对象中的重复元素

  1. char_list=['a','b','c','c','d','d','d']
  2.  
  3. print(set(char_list))

运行结果如下所示:

返回的是一个类似于字典的内容,但不是字典,字典有key和value,但是该内容只有value

使用type来输出类型:

  1. print(type(set(char_list)))
  2. print(type({1:2}))

结果如下所示:

定义一个句子,set同样能去掉重复的内容:

  1. sentence='Welcome Back to This Tutorial'
  2.  
  3. print(set(sentence))

运行结果如下所示:

set区分大小写、空格

能否直接比较char_list和sentence的不同?

  1. print(set([sentence,char_list]))

运行报错,不能在set中传入list,出现错误:TypeError: unhashable type: 'list'

可以通过add增加内容,如果set中已有的内容则不重复添加

  1. unique_char=set(char_list)
  2. unique_char.add('x')
  3. print(unique_char)

运行结果如下,增加了‘x’

同样add不能传入list,需要一个一个添加

还可以通过clear清除内容

  1. unique_char.clear()

运行结果为:

可以通过remove去除某一内容,返回值为None

  1. print(unique_char.remove('x'))
  2. print(unique_char)

运行结果为:

如果remove的内容是对象中没有的,则运行将会报错,为了避免这种情况,可使用discard,运行将不会报错,返回None

使用difference和intersection来寻找两个序列中不同和相同的内容,代码如下所示:

  1. set1=unique_char
  2. set2={'a','e','i'}
  3. print(set1)
  4. print(set2)
  5. print(set1.difference(set2))
  6. print(set1.intersection(set2))

运行结果如下所示:

Python初学——pickle & set的更多相关文章

  1. Python ,pickle

    @Python pickle模块学习   pickle提供了一个简单的持久化功能.可以将对象以文件的形式存放在磁盘上. ---------------------------------------- ...

  2. 孤荷凌寒自学python第四十五天Python初学基础基本结束的下阶段预安装准备

     孤荷凌寒自学python第四十五天Python初学基础基本结束的下阶段预安装准备 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天本来应当继续学习Python的数据库操作,但根据过去我自 ...

  3. (Python编程)Pickle对象

    Programming Python, 3rd Edition 翻译 最新版本见:http://wiki.woodpecker.org.cn/moin/PP3eD 19.4. Pickled Obje ...

  4. Python 序列化 pickle/cPickle模块

    Python 序列化 pickle/cPickle模块 2013-10-17 Posted by yeho Python序列化的概念很简单.内存里面有一个数据结构,你希望将它保存下来,重用,或者发送给 ...

  5. 从watevrCTF-2019:Pickle Store中学习python之pickle序列化漏洞

    从watevrCTF-2019:Pickle Store中学习python之pickle序列化漏洞 pickle提供了一个简单的持久化功能.可以将对象以文件的形式存放在磁盘上. 其本质是Picklin ...

  6. Python初学笔记之字符串

    一.字符串的定义 字符串是就一堆字符,可以使用""(双引号).''(单引号)来创建. 1 one_str = "定义字符串" 字符串内容中包含引号时,可以使用转 ...

  7. 21 python 初学(json pickle shelve)

    json: # _author: lily # _date: 2019/1/19 import json my_dict = {'name': 'lily', 'age': 18} f = open( ...

  8. Python初学的易犯错误

    当初学 Python 时,想要弄懂 Python 的错误信息的含义可能有点复杂.这里列出了常见的的一些让你程序 crash 的运行时错误. 1)忘记在 if , elif , else , for , ...

  9. 【python】pickle模块

    持久性的基本思想很简单.假定有一个 Python 程序,它可能是一个管理日常待办事项的程序,您希望在多次执行这个程序之间可以保存应用程序对象(待办事项).换句话说,您希望将对象存储在磁盘上,便于以后检 ...

随机推荐

  1. Redis各种数据结构性能数据对比和性能优化实践

    很对不起大家,又是一篇乱序的文章,但是满满的干货,来源于实践,相信大家会有所收获.里面穿插一些感悟和生活故事,可以忽略不看.不过听大家普遍的反馈说这是其中最喜欢看的部分,好吧,就当学习之后轻松一下. ...

  2. jsp 重定向技术

    页面重定向之后,request对象的属性全部失效,生成一个新的requeset对象

  3. Windows环境下安装scikit-learn

    scikit-learn是Python的一个机器学习库,请按照以下步骤进行安装. 1.首先确保你的机器安装了Python并且配置好了环境变量. 2.安装pip 下载地址:https://pypi.py ...

  4. 单页面应用(spa)引入百度地图(Cannot read property 'dc' of undefined)

    难点介绍 引入百度地图的时候,用原生的获取不到dom节点. ( var mapEle = document.getElementById(testApi): var map = new BMap.Ma ...

  5. java配置mongo最大连接数

    最近做压测,其中有个交易涉及到对mongo的操作. 单机压到1500UV的时候出现如下错误: 一看,原来是mongo配置的最大连接数不够: 我们来看看mongo的官方文档: connectionPer ...

  6. HDU 1176 免费馅饼:dp

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1176 题意: 横坐标范围为[0,10],你在第0秒站在坐标为5的地方. 在接下来的一段时间内,会有n个 ...

  7. Symbolic link and hard link的区别(linux)

    --Symbolic link and hard link的区别(linux) --------------------------------------------------2014/06/10 ...

  8. mac系统读写NTFS格式的移动硬盘

    Mac OS X默认情况下,对于NTFS的移动硬盘只能读不能写,可通过将移动硬盘格式化为exFAT 或者安装NTFS相关的工具,达到可读写的目的,但对于系统的安全性方面,以上方式得不到保证:在Mac ...

  9. C++数组和指针加减法和sizeof问题

    关于指针和加减法: 指针的加减法:指针的加减法,加多少或者减多少,主要是看所指对象的sizeof值. 例子: double m = 3.0; ; double *p=&m; int* p1=& ...

  10. python 第二天

    list,tuple,dict,set list,tuple,dict,set 是今天学习的四种 Python 内置类型 list list 即数组,有序的集合,可以使用索引的方式来访问 list 的 ...