Python测试常用库collections之namedtuple

collections是python的标准库,它提供了一些解决特定问题的容器,也就是说有些问题虽然可以用list,tuple,dict解决,但解决起来太麻烦,而这些问题又经常遇到,所以他们就把这些问题的通用方法整理了出来,放到collections库中让人使用。

collections中一共有9种容器,其中counter、defaultdict、deque、namedtuple、orderdict比较常用。

方法作用
namedtuple()创建命名元组子类的工厂函数
deque类似列表(list)的容器,实现了在两端快速添加(append)和弹出(pop)
ChainMap类似字典(dict)的容器类,将多个映射集合到一个视图里面
Counter字典的子类,提供了可哈希对象的计数功能
OrderedDict字典的子类,保存了他们被添加的顺序
defaultdict字典的子类,提供了一个工厂函数,为字典查询提供一个默认值
UserDict封装了字典对象,简化了字典子类化
UserList封装了列表对象,简化了列表子类化
UserString封装了列表对象,简化了字符串子类化

今天来学习namedtuple

这哥们为什么会被造出来呢?我们先看它的兄弟tuple,对于tuple大家应该都很熟悉。

tp = (1,2,3,4)

这就是一个元组了,元组通过下标访问元素。

tp[0]
tp[2]

但这时就有大佬不爽了,大佬们开发时经常遇到一种情况,既想要元素不能改变,又想要可以通过访问字典的方式访问元素,他们想要一种容器将tuple的不可变和字典的key结合起来,于是namedtuple诞生了。

namedtuple最大的特点就是可以给元素起名字,其中用到一个设计模式是工厂模式,详情请看!

定义对象

stud = namedtuple('stud', ['name', 'age', 'address'])

它有3种方式定义对象,但我觉得知道这一种就够了,其他两种看着很别扭。

其他两种

stud = namedtuple('stud', 'name, age, address'])
stud = namedtuple('stud', 'name age address'])

取值就可以直接类似取属性的方式

s.name
s.age
s.address

还可以转换为dict

s._asdict()

取值和字典一样了

s._asdict()['name']
from collections import namedtuple

stud = namedtuple('stud', ['name', 'age', 'address'])

s = stud('ws', '22', '火星')

print(s)
print(s.name)
print(s.age)
print(s.address)

print(s._asdict()['name'])

stud(name='ws', age='22', address='火星')
ws
22
火星
ws
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值