我有一个代码,我使用列表理解从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
答案 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
的基本构造函数,它接受一对可迭代的对。第一个版本是直接和硬编码,第二个版本使用列表推导来根据属性名称列表选择值。