5

Python中的namedtuple

 1 year ago
source link: https://xugaoxiang.com/2022/05/07/python-namedtuple/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

namedtuplecollections 模块中的一个容器类型。看名字,也带了 tuple,我们都知道 tuple 中的元素是不可以修改的,在映射中可以当键使用,而 namedtuple 不仅可以通过索引来访问,还可以通过属性名称来访问,同时还支持属性值的修改。

下面在 ipython 中进行演示

(pytorch1.7) PS D:\Gogs> ipython
Python 3.8.11 (default, Aug  6 2021, 09:57:55) [MSC v.1916 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 7.26.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: from collections import namedtuple

# 定义一个namedtuple类型的Worker,列表中是它的属性
In [2]: Worker = namedtuple('Worker', ['name', 'sex', 'id', 'salary'])

# 实例化对象
In [3]: w1 = Worker('alex', 'male', '001', '10000')

# 通过索引获取值
In [4]: w1[0]
Out[4]: 'alex'

# 通过名称获取值
In [5]: w1.salary
Out[5]: '10000'

In [6]: w1.name
Out[6]: 'alex' 

# 通过_make方法来实例化,参数是一个list
In [7]: w2 = Worker._make(['lily', 'female', '002', '11000'])

In [8]: w2.name
Out[8]: 'lily'

In [9]: w2.salary
Out[9]: '11000'

# 修改对象的属性
In [10]: w2._replace(salary='15000')
Out[10]: Worker(name='lily', sex='female', id='002', salary='15000')

In [11]: w1
Out[11]: Worker(name='alex', sex='male', id='001', salary='10000')

# 通过方法_asdict,可以转换成字典
In [12]: w1._asdict()
Out[12]: {'name': 'alex', 'sex': 'male', 'id': '001', 'salary': '10000'}

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK