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]))
bx80x03]qx00(Xx02x00x00x00aaqx01Xx02x00x00x00bbqx02Xx02x00x00x00ccqx03e.
>>> print(pickle.loads(bx80x03]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(blove fly)
print(md5.hexdigest())

##SHA1
sha1 = hashlib.sha1("key".encode("utf8"))
sha1.update(blove fly)
print(sha1.hexdigest())

##计算MD5
>>> import hashlib
>>> md5 = hashlib.md5()
>>> md5.update(blove fly)
>>> print(md5.hexdigest())
61976ec704dbce25ccb37ecacef1e4d6

##如果数据量很大,可以分块多次调用update(),最后计算的结果是一样的
>>> import hashlib
>>> md5 = hashlib.md5()
>>> md5.update(blove)
>>> 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的主要内容,如果未能解决你的问题,请参考以下文章

python常用模块之configparser模块

Python之常用模块

python之常用模块

python--常用模块之正则

python常用模块之random模块

python 生涯之常用模块