Pythonのベースモジュール(JSON、ピクルス、hashlib、コレクション)

JSONモジュール

JSONモジュールデータ構造は、特定の文字列の条件を満たすように変換され、また、バック復元デシリアライズできます。

  • ネットワーク伝送の場合:ダンプ、ロード

  • ダンプ、ロード:文書の読み取りを書くために使用

  • 文字列型への辞書リストとダンプ
    import json
    dic={"k1":"v1","k2":"v2","k3":"v3"}
    str_dic = json.dumps(dic)
    print(type(str_dic),str_dic)   #class "str"
  • ロード辞書やリストタイプ辞書やリストに生データを変換する文字列型

    import json
    dic={"k1":"v1","k2":"v2","k3":"v3"}
    dic2 = json.loads(str_dic)
    print(type(dic2),dic2)  #class dict
  • JSON形式のJSONデータを格納することができ、デフォルトのファイル内のファイルに文字列にオブジェクトをダンプ

    import json
    f = open("a.txt","w")
    dic = {"k1“:”v1",k2":"v2"}
    json.dump(dic,f)    #dump 方法接受一个文件句柄,直接将字典转换成json字符串写入文件
    不用f,write之类的,此时已经将dic写到a.txt中了
  • 辞書や辞書や元のリストのデータ型のリストに変換する文字列型をロード

import json
f = open("a.txt")
dic2 = json.load(f)  #load方法接受一个文件句柄,直接将文件中的json字符串转换成原数据结构返回
f.close()
print(type(dic2),dic2)
#<class 'dict'>    {'k1': 'v1', 'k2': 'v2'}

pickleモジュール

pickleモジュールは、Pythonすべてのデータ構造など、およびオブジェクト・タイプはバイトに変換され、次いで、還元もバックデシリアライズすることができます。

  • ネットワーク伝送ダンプをロードするために

  • 文書の読み取り、ダンプ負荷を書き込むために使用

  • ダンプ

    import pickle 
    dic={'k1':'v1','k2':'v2','k3':'v3'}
    str_dic = pickle.dumps(dic)
    print(str_dic)  bytes类型
  • ロード

    dic2=pickle.loads(str_dic)
    print(dic2)  #字典内容
  • ダンプ/ロード

    ファイルに書き込まれたバイトになります

    dic = {(1,2):'oldboy',1:True,'set':{1,2,3}}
    f = open('pick序列化',mode='wb')
    pickle.dump(dic,f) 打开文件,以字节形式写入dic
    f.close()
    
    f=open('pick序列化',mode='rb')
    print(pickle.load(f)) 读取字节,将文件中字节形式的字典返回

hashlibブロック暗号化アルゴリズム

  • MD5、SHA1、SHA256 SHA512

    md5    1.内容相同,密码一定相同
         2 加密的密文不可逆  
         3 明文 字节 密文
  • 簡単な暗号化

    import hashlib
    s ="1234567"
    m1 = hashlib.md5()   #选择加密方式,初始化一个加密
    m1.update(s.encode("utf-8"))  #将要加密的内容,添加到m中
    print(m1.hexdigest())   进行加密  fcea920f7412b5da7be0cf42b8c93759
  • 修正された塩

    user = input("user:") sadasd
    pwd = input ("pwd")  sadasd
    import hashlib
    md5 =hashlib.md5("oldboy".encode("utf-8"))  #盐
    md5.update(pwd.encode("utf-8"))
    print(md5.hexdigest())
  • ダイナミックな塩:

    import hashlib
    user = input("user:") #zz洲神
    pwd = input ("pwd") #洲神在此
    md5 = hashlib.md5(user.encode("utf-8"))  盐
    md5.update(pwd.encode("utf-8"))
    print(m‘d5.hexdigest())
    
    结果:user:zz洲神
      pwd洲神在此
      07bce8baf64e6bc38646b8d48655b5fe

コレクションモジュール

  • 統計カウンター

    LST = [11,2,2,123,1,1,123,12,12,32,12,31,23,123,21,3]

    from collections import Counter       # ***
    print(dict(Counter(lst)))   统计
    结果 {11: 1, 2: 2, 123: 3, 1: 2, 12: 3, 32: 1, 31: 1, 23: 1, 21: 1, 3: 1}
  • 注文した辞書orderedDict

    from collections import OrderedDict    # ***
    a = OrderedDict({"key1":1,"key2":2})
    print(a)
    print(a["key1"])
    输出结果
    OrderedDict([('key1', 1), ('key2', 2)])   模块的特殊数据类型,记就行了
    1
  • デフォルト辞書defaultdict

    from collections import defaultdict
    dic = defaultdict(list)
    dic["key1"].append(10)  默认dic中的值是字典,也可以修改 都可以,看示例
    dic["key2"].append(20)
    dic["ke3"]="xxxx"
    print(dic)
    结果:defaultdict(<class 'list'>, {'key1': [10], 'key2': [20], 'ke3': 'xxxx'})
  • 両端キュー

    インデックスによって要素すばやくデータストレージ、アクセスリストを使用して、しかし挿入や要素を削除するとき、大量のデータが、効率が非常に低い挿入及び欠失である場合、リストは線形メモリであるため、非常に遅いです。

    両端キューは、双方向リストの効率的な挿入および削除を達成キューとに適しスタックすることです:

    from collections import deque
    q = deque(['a', 'b', 'c'])
    q.append('x')
    q.appendleft('y')
    print(q)
    deque(['y', 'a', 'b', 'c', 'x'])

    両端キューリストはappendを達成することに加えて、()とPOP()、それはまた、(appendleftサポート)とpopleft()、あなたは非常に効率的に頭に要素を追加したり、削除することができますので。主に効率を達成するために!

  • でisinstance

    このデータ型を分析、それはブール値を返します。

    正確な決意は、オブジェクトの背後にあるかどうか、LSTの前にあるイテレータ

    from collections import Iterable,Iterator
    lst = [1,2,3,4]
    print(isinstance(lst,list))   # 判断lst是不是列表类型 返回的是True
    print(isinstance(lst,Iterator)) # 判断lst是不是迭代器 返回的是False
    print(isinstance(lst,Iterable)) # 判断lst是不是可迭代对象 返回的是True

おすすめ

転載: www.cnblogs.com/zzsy/p/12229838.html
おすすめ