码迷,mamicode.com
首页 > 编程语言 > 详细

python 具名元组

时间:2017-10-27 21:33:53      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:字段名   order   val   通过   dict   medium   获取   接受   print   

   collection.namedtuple是一个工厂函数, 它可以用来构建一个带字段名的元组和一个有名字的类——这个带名字的类对调试程序有很大帮助。而且用namedtuple构建的类的实例所消耗的内存和元组是一样的, 因为字段名都被存在对应的类里面。这个实例和消耗的对象实例比起来也要小一点, 因为Python不会用__dict__来存放这些属性。

 


 

 

>>> from collections import namedtuple

>>> City = namedtuple(‘City‘,  ‘name country population coordinates‘)                     ( 1 )

>>> tokyo = City(‘Tokyo‘, ‘JP‘, 36.933, (35.689722, 139.691667))                               ( 2 )

>>> tokyo (‘Tokyo‘, ‘JP‘, 36.933, (35.689722, 139.691667))

>>> tokyo[1]

‘JP‘

>>> tokyo.polution

36.993

>>> tokyo.coordinates                                                                                                 ( 3 )

(35.689722, 139.691667)





(  1  )创建一个具名元组需要两个参数, 一个是类名, 另一个是各字段的名字。后者可以是由数个字符串组成的可迭代对象, 或者是由空格分隔开的字段组成的字符串。

( 2 )存放在对应字段里的数据要以一串参数的形式传入构造函数中(元组的构造函数只接受单一的可迭代对象)

( 3 )我们可以通过字段名或者位置信息来获取一个字段信息。

 


 

  除了从普通元组那里继承来的属性之外, 具名元组还有一些自己专属的属性。比如_fields类属性,类方法_make(iterable)和实例方法_asdict()。

 

>>> City._fields                                                          ( 1 )
(‘name‘, ‘country‘, ‘population‘, ‘coordinates‘)
>>> LatLong = namedtuple(‘LatLong‘, ‘lat long‘)
>>> delhi_data = (‘Delhi NCR‘, ‘IN‘, 21.935, LatLong(28.613889, 77.208889))
>>> delhi = City._make(delhi_data)                                        ( 2 )
>>> delhi._asdict()                                                       ( 3 )
OrderedDict([(‘name‘, ‘Delhi NCR‘), (‘country‘, ‘IN‘), (‘population‘, 21.935), (‘coordinates‘, LatLong(lat=28.613889, long=77.208889))])
>>> for key, value in delhi._asdict().items():
...     print(key + ‘:‘, value)
...
name: Delhi NCR
country: IN
population: 21.935
coordinates: LatLong(lat=28.613889, long=77.208889)
>>>

 


( 1 )_field属性是一个包含这个类所有字段名称的元组。

( 2 )用_make()通过接受一个可迭代对象来生成这个类的一个实例, 它的作用和City(*delhi_data)是一样的

( 3 )_asdict()把具名元组以collection.OrderedDict的形式返回。它的第二个角色则是充当一个不可变的列表。

 

python 具名元组

标签:字段名   order   val   通过   dict   medium   获取   接受   print   

原文地址:http://www.cnblogs.com/arthurlzyw/p/7745111.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!