您可以考虑使用collections.namedtuple 类型来创建具有可通过属性查找访问的字段的类似元组的对象。
collections.namedtuple(typename, field_names[, verbose])
返回一个名为 typename 的新元组子类。新的子类用于创建类似元组的对象,这些对象具有可通过属性查找访问的字段以及可索引和可迭代的。子类的实例还有一个有用的文档字符串(带有 typename 和 field_names)和一个有用的 __repr__() 方法,它以 name=value 格式列出元组内容。
>>> import collections
>>> mytup = collections.namedtuple('mytup', ['tag','name', 'values'])
>>> e1 = mytup('tag1','great',[1,'two',3])
>>> e1
mytup(tag='tag1', name='great', values=[1, 'two', 3])
>>> e1.values
[1, 'two', 3]
>>>
基于其他答案,过滤mytup 对象列表的示例:
>>> tlist = [mytup("foo", "dog", [1,2,3,4]),
mytup("bar","cat", [4,5,6,7,8,9]), mytup("moo","cow", [4,5,7,8,9,1,3,4,65])]
>>> tlist
[mytup(tag='foo', name='dog', values=[1, 2, 3, 4]),
mytup(tag='bar', name='cat', values=[4, 5, 6, 7, 8, 9]),
mytup(tag='moo', name='cow', values=[4, 5, 7, 8, 9, 1, 3, 4, 65])]
>>> [t for t in tlist if t.tag == 'bar']
[mytup(tag='bar', name='cat', values=[4, 5, 6, 7, 8, 9])]
>>>
Namedtuple 对象当然可以用于其他结构(例如dict),如其他答案中所述。显然,优点是字段被命名,使用它们的代码更清晰。