TL;DR:为此提供了一个方法_asdict。
下面是这个用法的演示:
>>> fields = ['name', 'population', 'coordinates', 'capital', 'state_bird']
>>> Town = collections.namedtuple('Town', fields)
>>> funkytown = Town('funky', 300, 'somewhere', 'lipps', 'chicken')
>>> funkytown._asdict()
OrderedDict([('name', 'funky'),
('population', 300),
('coordinates', 'somewhere'),
('capital', 'lipps'),
('state_bird', 'chicken')])
这是一个有文档记录的namedtuples方法,也就是说,与python中通常的约定不同,方法名称上的前导下划线并不是为了阻止使用。与其他添加到命名元组_make, _replace, _source, _fields的方法一起,它有下划线只是为了尝试和防止与可能的字段名冲突。
注意:对于一些2.7.5 < python版本< 3.5.0的代码,你可能会看到这个版本:
>>> vars(funkytown)
OrderedDict([('name', 'funky'),
('population', 300),
('coordinates', 'somewhere'),
('capital', 'lipps'),
('state_bird', 'chicken')])
有一段时间,文档提到_asdict已经过时了(见这里),并建议使用内置方法vars。这个建议现在已经过时了;为了修复与子类化相关的错误,在namedtuples上出现的__dict__属性再次被此提交删除。