Python 从对象列表创建OrderedICT列表
我有一个代码,其中我使用列表理解从对象列表创建了dict列表 示例代码: 如何将其更改为OrderedDict,因为我希望保持元素的顺序Python 从对象列表创建OrderedICT列表,python,Python,我有一个代码,其中我使用列表理解从对象列表创建了dict列表 示例代码: 如何将其更改为OrderedDict,因为我希望保持元素的顺序 我正在使用Python 2.7,这里有几个解决方案: version_info = [OrderedDict([("mnemonic": , v.mnemonic), ("unit", v.unit), ("value", v.value), ("description", v.descr)])
我正在使用Python 2.7,这里有几个解决方案:
version_info = [OrderedDict([("mnemonic": , v.mnemonic), ("unit", v.unit),
("value", v.value), ("description", v.descr)])
for v in las.version]
两个版本都使用OrderedDict的基本构造函数,它接受成对的iterable。第一个版本是直接和硬编码的,第二个版本使用列表理解来根据属性名称列表选择值。。。。使用订购的ICT?到底是什么问题?@juanpa.arrivillaga:你的意思是说OrderedDict构造函数?它会接受不止一个元素吗?你看过了吗?无论如何,OrdereDict构造函数的工作方式与dict构造函数完全相同,它接受一组键值对。不想让人讨厌,但如果你告诉我们你遇到的困难到底是什么,通常效果会更好。一般来说,我们假设您已经阅读了相关文档……不过,公平地说,文档似乎假设您会理解items意味着一个可编辑的键值对……此外,如果您可以切换到Python 3,Python>=3.7可以保证在普通dict对象中的插入顺序,因此您的代码将按编写的顺序工作。。。
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]