zoukankan      html  css  js  c++  java
  • 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对象
  • 相关阅读:
    HDU 4913 Least common multiple
    HDU 4915 Parenthese sequence
    HDU 2459 Maximum repetition substring
    HDU 5727 Necklace
    HDU 5724 Chess
    HDU 5726 GCD
    hihoCoder1033 交错和 数位DP
    2016百度之星资格赛题解
    10LaTeX学习系列之---Latex的文档结构
    09LaTeX学习系列之---Latex 字体的设置
  • 原文地址:https://www.cnblogs.com/z-qinfeng/p/12038424.html
Copyright © 2011-2022 走看看