欢迎访问我的网站,希望内容对您有用,感兴趣的可以加入我们的社群。

Python 中的 namedtuple

Python基础 迷途小书童 3年前 (2022-05-07) 1316次浏览 0个评论

环境

  • python 3.8

前言

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

实例

下面在 ipython 中进行演示

  1. (pytorch1.7) PS D:\Gogs> ipython
  2. Python 3.8.11 (default, Aug 6 2021, 09:57:55) [MSC v.1916 64 bit (AMD64)]
  3. Type 'copyright', 'credits' or 'license' for more information
  4. IPython 7.26.0 -- An enhanced Interactive Python. Type '?' for help.
  5. In [1]: from collections import namedtuple
  6. # 定义一个namedtuple类型的Worker,列表中是它的属性
  7. In [2]: Worker = namedtuple('Worker', ['name', 'sex', 'id', 'salary'])
  8. # 实例化对象
  9. In [3]: w1 = Worker('alex', 'male', '001', '10000')
  10. # 通过索引获取值
  11. In [4]: w1[0]
  12. Out[4]: 'alex'
  13. # 通过名称获取值
  14. In [5]: w1.salary
  15. Out[5]: '10000'
  16. In [6]: w1.name
  17. Out[6]: 'alex'
  18. # 通过_make方法来实例化,参数是一个list
  19. In [7]: w2 = Worker._make(['lily', 'female', '002', '11000'])
  20. In [8]: w2.name
  21. Out[8]: 'lily'
  22. In [9]: w2.salary
  23. Out[9]: '11000'
  24. # 修改对象的属性
  25. In [10]: w2._replace(salary='15000')
  26. Out[10]: Worker(name='lily', sex='female', id='002', salary='15000')
  27. In [11]: w1
  28. Out[11]: Worker(name='alex', sex='male', id='001', salary='10000')
  29. # 通过方法_asdict,可以转换成字典
  30. In [12]: w1._asdict()
  31. Out[12]: {'name': 'alex', 'sex': 'male', 'id': '001', 'salary': '10000'}
喜欢 (0)

您必须 登录 才能发表评论!