从对象列表中创建ordereddict列表

时间:2018-05-09 01:27:42

标签: python

我有一个代码,我使用列表理解从dict创建list of objects列表。

示例代码:

version_info = [{"mnemonic": v.mnemonic, "unit": v.unit,
                 "value": v.value, "description": v.descr}
                for v in las.version]

如何将其更改为OrderedDict,因为我想维护元素的顺序。

我使用的是Python 2.7

1 个答案:

答案 0 :(得分:1)

以下是几个解决方案:

version_info = [OrderedDict([("mnemonic": , v.mnemonic), ("unit", v.unit),
                 ("value", v.value), ("description", v.descr)])
                for v in las.version]

keys = ["mnemonic", "unit", "value", "description"]
attrs = keys[:-1] + ["descr"]
version_info = [OrderedDict([key, getattr(v, attr) for key, attr in zip(keys, attrs)])
                for v in las.version]

两个版本都使用OrderedDict的基本构造函数,它接受一对可迭代的对。第一个版本是直接和硬编码,第二个版本使用列表推导来根据属性名称列表选择值。