Python常用模块之jsonpicklerandomhashlibcollections
Posted lYong90
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python常用模块之jsonpicklerandomhashlibcollections相关的知识,希望对你有一定的参考价值。
1、json和pickle
json用于字符串和Python数据类型间进行转换
pickle用于python特有的类型和python的数据类型间进行转换
json和pickle均提供了四种方法dumps,dump,loads,load
##json dumps() ##转换成字符串 loads() ##将json编码的字符串再转换为python的数据结构 dump() ##转换成字符串并存存储到文件中 load() ##从数据文件中读取数据,并将json编码的字符串转换为python的数据结构 >>> print(json.dumps([‘aa‘, ‘bb‘, ‘cc‘])) ["aa", "bb", "cc"] >>> print(json.loads(‘["aa", "bb", "cc"]‘)) [‘aa‘, ‘bb‘, ‘cc‘] ##pickle dumps() ##将数据通过特殊的形式转换为只有python语言认识的字符串 loads() ##将pickle数据转换为python的数据结构 dump() ##将数据通过特殊的形式转换为只有python语言认识的字符串,并写入文件 load() ##从数据文件中读取数据,并转换为python的数据结构 >>> print(pickle.dumps([‘aa‘, ‘bb‘, ‘cc‘])) b‘x80x03]qx00(Xx02x00x00x00aaqx01Xx02x00x00x00bbqx02Xx02x00x00x00ccqx03e.‘ >>> print(pickle.loads(b‘x80x03]qx00(Xx02x00x00x00aaqx01Xx02x00x00x00bbqx02Xx02x00x00x00ccqx03e.‘)) [‘aa‘, ‘bb‘, ‘cc‘]
2、random
random.random() ##0~1之间的随机小数 random.uniform(1,3) ##1~3之间的随机小数 random.randint(1,5) ##[1,5]之间的随机整数 random.randrange(1,10,2) ##[1,10) 之间随机奇数,间隔为2的数 random.choice([1,‘23‘,[4,5]]) ##随机选择一个返回 random.sample([1,‘23‘,[4,5]],2) ##随机选择多个返回,返回的个数为函数的第二个参数 random.shuffle([1,3,5,7,9]) ##打乱列表顺序 ##返回验证码 import random def v_code(): code = ‘‘ for i in range(5): num=random.randint(0,9) alf=chr(random.randint(65,90)) add=random.choice([num,alf]) code="".join([code,str(add)]) return code print(v_code())
3、hashlib
hashlib提供了常见的摘要算法,如MD5,SHA1等等。
##md5计算 md5 = hashlib.md5("key".encode("utf8")) ##可以添加秘钥,秘钥可以是用户id,这样就算密码相同,加密后的md5也是不一样的 md5.update(b‘love fly‘) print(md5.hexdigest()) ##SHA1 sha1 = hashlib.sha1("key".encode("utf8")) sha1.update(b‘love fly‘) print(sha1.hexdigest()) ##计算MD5 >>> import hashlib >>> md5 = hashlib.md5() >>> md5.update(b‘love fly‘) >>> print(md5.hexdigest()) 61976ec704dbce25ccb37ecacef1e4d6 ##如果数据量很大,可以分块多次调用update(),最后计算的结果是一样的 >>> import hashlib >>> md5 = hashlib.md5() >>> md5.update(b‘love‘) >>> md5.update(b‘ fly‘) >>> print(md5.hexdigest()) 61976ec704dbce25ccb37ecacef1e4d6
4、collections
ollections是Python内建的一个集合模块,提供了许多有用的集合类,是python对默认数据结构的一种补充
##namedtuple是一个函数,它用来创建一个自定义的元组对象,并且规定了元组元素的个数,并可以用属性而不是索引来引用元组的某个元素。 >>> from collections import namedtuple >>> colltuple = namedtuple(‘colltuple‘, [‘x‘,‘y‘]) >>> col = colltuple(‘yong‘,‘fly‘) >>> col.x ‘yong‘ >>> col.y ‘fly‘ 在内置数据类型(dict、list、set、tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等。 1.namedtuple: 生成可以使用名字来访问元素内容的tuple 2.deque: 双端队列,可以快速的从另外一侧追加和推出对象 3.Counter: 计数器,主要用来计数 4.OrderedDict: 有序字典 5.defaultdict: 带有默认值的字典 ##deque: list插入和删除元素很慢,数据量大的时候,插入和删除效率很低。deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈。 >>> from collections import deque >>> q = deque([‘a‘,‘b‘,‘c‘]) >>> q.append(‘d‘) ##默认添加列表最后一项 >>> q.appendleft(‘e‘) ##添加到列表第一项 >>> q deque([‘e‘, ‘a‘, ‘b‘, ‘c‘, ‘d‘]) >>> q.pop() ##默认删除列表最后一个元素 ‘d‘ >>> q.popleft() ##删除列表的第一个元素 ‘e‘ >>> q deque([‘a‘, ‘b‘, ‘c‘]) ##defaultdict使用字典时,如果引用的Key不存在,就会抛出 KeyError,如果希望key不存在时,返回一个默认值,就可以用 defaultdict. X=defaultdict(lambda: ‘N/A‘) ##OrderedDict有序字典的应用。OrderedDict 的有序性是按照插入的顺序,而不是KEY的顺序。 ##Counter简单的计数器,例如,统计字符出现的个数。
以上是关于Python常用模块之jsonpicklerandomhashlibcollections的主要内容,如果未能解决你的问题,请参考以下文章