namedtuple的简单使用

Posted z-qinfeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了namedtuple的简单使用相关的知识,希望对你有一定的参考价值。

"""
    factory function for creating tuple subclasses with named fields
    namedtuple 是tuple的子类,
    在tuple的基础上增添了许多功能, 最主要是可以把它看成一个类来使用
"""
from  collections import namedtuple

# 使用namedtuple的第一种方式
User = namedtuple("User", [name, age, height])  # 这就相当于定义了一个User类,且它有三个属性name,age,height
user_tuple = (张三, 12, 186)
user = User(*user_tuple)  # 使用元组,创建一个User对象 ,且将user_tuple中的元素依次赋值给user, 注意*号
print(user.name)  # 张三 直接使用.xx 取值, 很方便啦

# 使用namedtuple的第二种方式
User = namedtuple("User", [name, age, height, edu])
user_tuple = (张三, 12, 186)
# user = User(*user_tuple,‘doctor‘)   # 定义的User是四个属性,但是user_tuple中只有三个值, 但是可以在创建对象时添加其余属性
user = User(*user_tuple, edu=doctor)  # 定义的User是四个属性,但是user_tuple中只有三个值, 但是可以在创建对象时添加其余属性
print(user.edu)  # doctor  一样可以取到值
name, age, *other = user  # 支持拆包操作
print(name, age, other)  # 张三 12 [186, ‘doctor‘]

# 使用namedtuple第三种方式
User = namedtuple("User", [name, age, height, edu])
user_tuple = (张三, 12, 186, master)
user = User._make(user_tuple)  # 使用_make方法创建对象实例,不过需要注意的是user_tuple中数据个数一定要与User中声明的属性个数相等
print(user)  # User(name=‘张三‘, age=12, height=186, edu=‘master‘)


# 使用namedtuple的第四种方式
User = namedtuple("User", [name, age, height, edu])
user_tuple = (张三, 12, 186, master)
user = User._make(user_tuple)
user_dict = user._asdict()  # 转换为一个排序的dict
print(user_dict)  # OrderedDict([(‘name‘, ‘张三‘), (‘age‘, 12), (‘height‘, 186), (‘edu‘, ‘master‘)])

# 注意: 以上示例使用user_tuple的地方都可以换成一个iterable对象

以上是关于namedtuple的简单使用的主要内容,如果未能解决你的问题,请参考以下文章

python中namedtuple介绍

Java 中的 NamedTuple 替代方案是啥?

python模块与包简单整理

在 namedtuple 中输入提示

Python命名约定-namedtuples [重复]

Python数据结构与算法---namedtuple