python中的namedtuple学习

namedtupe(具名元组)是tuple(元组)的一种变形,却具有其特殊的性质。
可将namedtuple看成一种定义类的数据结构,与class类似,但这种数据结构的类只有类成员,没有类方法。
下面来看具体的使用:

from collections import namedtuple

# City = namedtuple('City', ['name', 'country', 'population', 'coordinates'])
City = namedtuple('City', 'name country population coordinates')
print(City._fields)
# ('name', 'country', 'population', 'coordinates')

tokyo = City('Tokyo', 'JP', 36.933, (35.689722, 139.691667))
print(tokyo[0], tokyo[1], tokyo[2], tokyo[3]) 
# Tokyo JP 36.933 (35.689722, 139.691667)
print(tokyo.name, tokyo.country, tokyo.population, tokyo.coordinates)
# Tokyo JP 36.933 (35.689722, 139.691667)

LatLong = namedtuple('LatLong', 'latitude longtitude')
hz_data = ('Hangzhou', 'CHINA', 9.806, LatLong(30.16, 120.12))
hangzhou = City._make(hz_data)
print(hangzhou)
# City(name='Hangzhou', country='CHINA', population=9.806, 
#     coordinates=LatLong(latitude=30.16, longtitude=120.12))

print(hangzhou._asdict())
# OrderedDict([('name', 'Hangzhou'), ('country', 'CHINA'), 
# ('population', 9.806), ('coordinates', LatLong(latitude=30.16, longtitude=120.12))])
for k, v in hangzhou._asdict().items():
   print(k, v)
# name Hangzhou
# country CHINA
# population 9.806
# coordinates LatLong(latitude=30.16, longtitude=120.12)

首先是类的定义。创建namedtuple需要两个参数:类名和类的各个字段名;字段名可以是由数个字符串组成的可迭代对象,或者是由空格分隔开的字段名组成的字符串。

其次是元素的访问。namedtuple可通过下标访问(普通元组的访问方法),也可通过属性名(类似类成员)来访问其中的任意一个元素。

namedtuple有3个属性:

  1. _fields 属性是一个包含这个类所有字段名称的元组。
  2. 用 _make() 通过接受一个可迭代对象来生成这个类的一个实例,它的作用跟 City(*hz_data) 是一样的.
  3. _asdict() 把具名元组以 collections.OrderedDict 的形式返回,可以利用它来把元组里的信息友好地呈现出来.。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值