Python - collections(集合類):nametuple
阿新 • • 發佈:2020-08-27
0. 學習資料
https://www.imooc.com/video/16361
1. collections
擁有的資料結構:
__all__ = ['deque', 'defaultdict', 'namedtuple', 'UserDict', 'UserList',
'UserString', 'Counter', 'OrderedDict', 'ChainMap']
1.1 tuple
-
不可變的(效能優化、執行緒安全、可以作為dict的key(需要物件可雜湊)、拆包),可迭代物件
-
拆包:自動將位置對應值與變數進行對映
# 拆包:自動將位置對應值與變數進行對映 one, two, three = tuple_demo print(one, two, three) # 1 3 5 # 拆包: 只需要取前面第一個值的情況 on, *other = tuple_demo print(on) # 1
1.2 nametuple
#!/usr/bin/env/python3 # -*- coding:utf-8 -*- """ @project: collections_mkw @author: zy7y @file: nametuple_test.py @ide: PyCharm @time: 2020/8/28 """ from collections import namedtuple # 生成一個類, 第一個引數為一個型別名稱,第二個引數列表是生成類的一個屬性列表 User = namedtuple("user", ["name", "age", "height"]) user = User(name="zy7y", age=18, height=157) print(user.name, user.age, user.height) # 可變引數、元祖解包,函式傳參方式之一 user_tuple = ("zy7y", 18) # *user_tuple 表示解包操作,按順序解包獲得 zy7y 18 傳遞進去, user_zy7y = User(*user_tuple, 157) print(user_zy7y.name, user_zy7y.age, user_zy7y.height) # zy7y 18 157 # 字典解包, 函式傳參方式之一 user_dict = { "name": "kelan", "age": 17, "height": 158 } user_dict_zy7y = User(**user_dict) print(user_dict_zy7y.name, user_dict_zy7y.age, user_dict_zy7y.height) # kelan 17 158 # _make方法傳參, 傳入一個可迭代物件 user = User._make('str') print(user.name, user.height, user.age) # s r t # _asdict() 將類屬性(nametuple)轉換成orderdict user_dict = user._asdict() print(user_dict) # OrderedDict([('name', 's'), ('age', 't'), ('height', 'r')]) # nametuple拆包 name, age, height = user print(name, age, height) # s t r