我在python中有一个名为tuple的类
class Town(collections.namedtuple('Town', [
'name',
'population',
'coordinates',
'population',
'capital',
'state_bird'])):
# ...
Run Code Online (Sandbox Code Playgroud)
我想做的是将其变成字典.我承认python不是我强大的语言之一.关键是我不希望它与我所拥有的字段的名称或数字紧密相关.
有没有办法写它,以便我可以添加更多的字段,或传递一个完全不同的命名元组并获取字典.
编辑:我不能改变原来的类定义,因为它在别人的代码中.所以我需要一个城镇的实例并将其转换为字典.
在Python 3.5.0上:
>>> from collections import namedtuple
>>> cluster = namedtuple('Cluster', ['a', 'b'])
>>> c = cluster(a=4, b=9)
>>> c
Cluster(a=4, b=9)
>>> vars(c)
OrderedDict([('a', 4), ('b', 9)])
Run Code Online (Sandbox Code Playgroud)
在Python 3.5.1上:
>>> from collections import namedtuple
>>> cluster = namedtuple('Cluster', ['a', 'b'])
>>> c = cluster(a=4, b=9)
>>> c
Cluster(a=4, b=9)
>>> vars(c)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: vars() argument must have __dict__ attribute
Run Code Online (Sandbox Code Playgroud)
似乎有些事情发生了namedtuple变化(或者可能是某些事情vars()?).
这是故意的吗?我们不应该使用这种模式将命名元组转换为字典吗?