"""
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 = ('张三', '', '')
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的简单使用的更多相关文章

  1. collections模块之defaultdict()与namedtuple()方法简单介绍

    一.defaultdict() 作用:根据数据创建字典时,需要为一些数据生成字典,而且对值得类型进行限定的时候,考虑defaultdict from collections import defaul ...

  2. 整理了8个Python中既冷门又实用的技巧

    1.print 打印带有颜色的信息 大家知道 Python 中的信息打印函数 print,一般我们会使用它打印一些东西,作为一个简单调试. 但是你知道么,这个 Print 打印出来的字体颜色是可以设置 ...

  3. Python 实用冷门知识整理

    1.print 打印带有颜色的信息 大家知道 Python 中的信息打印函数 print,一般我们会使用它打印一些东西,作为一个简单调试. 但是你知道么,这个 Print 打印出来的字体颜色是可以设置 ...

  4. python 简单了解namedtuple

    namedtuple类位于collections模块,有了namedtuple后通过属性访问数据能够让我们的代码更加的直观更好维护 namedtuple能够用来创建类似于元祖的数据类型,除了能够用索引 ...

  5. python-Day3-set 集合-counter计数器-默认字典(defaultdict) -可命名元组(namedtuple)-有序字典(orderedDict)-双向队列(deque)--Queue单项队列--深浅拷贝---函数参数

    上节内容回顾:C语言为什么比起他语言块,因为C 会把代码变异成机器码Pyhton 的 .pyc文件是什么python 把.py文件编译成的.pyc文件是Python的字节码, 字符串本质是 字符数组, ...

  6. python中namedtuple介绍

    namedtuple:namedtuple类位于collections模块,有了namedtuple后通过属性访问数据能够让我们的代码更加的直观更好维护.namedtuple能够用来创建类似于元祖的数 ...

  7. python实现简单动画——生命游戏

    生命游戏 生命游戏的宇宙是一个无限的,其中细胞的二维正交网格,每个细胞处于两种可能的状态之一,即*活着*或*死亡*(分别是*人口稠密*和*无人居住*).每个细胞与它的八个邻居相互作用,这八个邻居是水平 ...

  8. Python 简单入门指北(一)

    Python 简单入门指北(一) Python 是一门非常容易上手的语言,通过查阅资料和教程,也许一晚上就能写出一个简单的爬虫.但 Python 也是一门很难精通的语言,因为简洁的语法背后隐藏了许多黑 ...

  9. collections集合模块 [namedtuple,deque,*]

    collections是Python内建的一个集合模块,提供了许多有用的集合类. namedtuple namedtuple是一个函数, 它用来创建一个自定义的tuple对象,并且规定了 tuple元 ...

随机推荐

  1. 通过HookNtCreateSection 动态监控驱动sys、动态链接库dll、可执行文件exe加载

    [cpp] view plaincopyprint? /* windows2003 x86/x64 window7 x86 windows2008 R2 x64测试通过 */ #include < ...

  2. Using Groovy To Import XML Into MongoDB

    w https://trishagee.github.io/post/groovy_import_to_mongodb/

  3. fedora23使用Xwayland的gnome-shell

    gnome是桌面管理系统的名称, 包括gnome, kde, xfce等等 同时, gnome是旧的gnome 2 的桌面管理 在gnome 3中, 桌面管理系统叫做gnome shell. gnom ...

  4. Emmet - 自动补全 JSX

    VSCode 中设置"emmet.syntaxProfiles": {"javascript": "jsx"} reactjs - JSX ...

  5. jmeter_linux下运行

    1 先把jmeter上传到linux,解压后配置环境变量(/etc/profile) 2 把在Windows上面做好的脚本上传到linux上面(linux下运行jmeter是在jmeter的bin目录 ...

  6. KETTLE——(例)简单的字段转换

    一个简单的小例子:结合数据抽取.简单的字段转换.数据输出. 资源库连接.数据输入.数据输出.参见之前的文章. ​ 基本的转换结构是这样的,我们从表中输入,选择我们需要的字段,已经对应的名称,然后将数据 ...

  7. pandas 基础介绍与概览

    pandas是 基于NumPy数组构建的,特别是基于数组的函数和不使用for循环的数据处理 相关联的几个库, 分析库 scikit-learn 和 statsmodels 数值计算工具,NumPy 可 ...

  8. java配置详解

    JAVA_HOMED:\JavaTools\Java\jdk1.7.0_80\ D:\JavaEnvironment\Java\jdk1.7.0_71D:\JavaEnvironment\Java\j ...

  9. 【HANA系列】SAP HANA快捷键大全

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA快捷键大全   ...

  10. JAVA的学习

    怎么说呢,我已经接触JAVA已经两周了,个人感觉还是不懂,哈哈,JAVA是一门编程语言,是大多数开发者较为习惯的编程模式,我感觉相对比C语言来说可能简单学点,可能是我先接触C语言把,或许因人而异把,在 ...