Python各种模块大数据 爬虫Python AI SqlPython语言与信息数据获取和机器学习

命名元组nametuple

2018-01-17  本文已影响9人  码农小杨

关于tuple的一些知识点

tuple的一些特性

tuple比list好的地方
tuple是不可变的,immutable的重要性

user_tuple = ("hongshaorou", 26, 172)

name, *other = user_tuple

user_tuple = [1,2,3]

a, b, c = user_tuple

关于nametuple的知识点

# 我们是使用namedtuple生成类,而不是对象
from collections import namedtuple
# 生成类
User = namedtuple("User", ["name", "age", "height"])
# 根据类创建命名实例
user = User(name="hongshaorou", age=24, height=165)
#我们可以使用点获得属性值
print(user.age, user.name, user.height)

相当于 创建一个类

class User:
    def __init__(self, name, age, heught):
        pass

为什么我们不使用创建类的方式而是使用nametuple?

第一点: 使用nametuple简洁
第二点: 使用nametuple节省空间,省了很多创建类的时候的内置变量

实例: user 表的数据全部取出然后加一个列

User = namedtuple("User", ["name", "age", "height", "edu"])
user_type = ("hongshaorou", 24, 165)
user = User(*user_type, "master")

user_dict = {
    "name": "hongshaorou",
    "age": 24,
    "height": 165
}

user = User(**user_dict, edu="master")

方法的使用

user_type = ("hongshaorou", 24, 165, "master")
user_list = ["hongshaorou", 24, 165, "master"]
user_dict = {
    "name": "hongshaorou",
    "age": 24,
    "height": 165,
    "edu": "master"
}

对于 _make()方法传入的只要是可迭代对象都可以,但是传入的数值个数必须和属性值一致 当传入字典的时候,不会有值

user = User._make(user_type)
user = User._make(user_list)
# user = User._make(user_dict)

因为nametuple继承tuple 因此同意具有拆包的功能

name, age, *other = user

对于 _asdict 方法会将nametuple转化为OrderDict

user_info_dict = user._asdict()

如果疑问错误请私信,运行结果暂时未给出,下篇将会在ipython环境下,运行结果一并显示。

上一篇 下一篇

猜你喜欢

热点阅读