如何将对象列表推导生成的dict列表改为OrderedDict(Python2.7)
将对象列表转为OrderedDict列表(Python 2.7)
在Python 2.7里实现这个需求很直接,只需要借助标准库collections中的OrderedDict就能搞定,具体操作分两步:
导入OrderedDict类
首先得从标准库中引入OrderedDict,它是专门用来维护插入顺序的字典类型:from collections import OrderedDict修改列表推导式的字典构造逻辑
原来的代码用普通字典{}生成元素,但Python 2.7的普通字典不保证插入顺序,而且直接用关键字参数初始化OrderedDict也没法确保键的顺序(因为Python 2.7中关键字参数的传递顺序是不确定的)。所以要改为传入有序的键值对序列(比如元组组成的列表)来初始化OrderedDict。
修改后的完整代码如下:
version_info = [ OrderedDict([ ("mnemonic", v.mnemonic), ("unit", v.unit), ("value", v.value), ("description", v.descr) ]) for v in las.version ]
这样生成的version_info就是OrderedDict组成的列表:既会保持列表中元素的顺序(和las.version的迭代顺序完全一致),每个OrderedDict内部的键也会严格按照你定义的mnemonic→unit→value→description的顺序保存。
内容的提问来源于stack exchange,提问作者Shankar
相关产品推荐
相关产品推荐

