我需要以最小的时间复杂性将给定的有序字典列表转换为其他格式。复制示例代码:
import csv
from collections import OrderedDict
list_of_dicts = [OrderedDict([('key_a','value_a'),('key_b','value_b')]),
OrderedDict([('key_a','value_c'),('key_b','value_d')]),
OrderedDict([('key_a','value_e'),('key_b','value_f')])]
需要将以上内容转换为以下内容(无需使用显式用于循环]
convertedDictionary = [OrderedDict([('value_a','value_b')]),
OrderedDict([('value_c','value_d')]),
OrderedDict([('value_e','value_f')])]
第一步:获取列表:足够简单的将dict.values
映射到字典:
>>> list(map(dict.values,list_of_dicts))
[['value_a', 'value_b'], ['value_c', 'value_d'], ['value_e', 'value_f']]
现在是最终结果,没有循环,唯一的选择是map
和lambda
,但很丑陋
>>> list(map(lambda x : OrderedDict((x,)),map(dict.values,list_of_dicts)))
[OrderedDict([('value_a', 'value_b')]),
OrderedDict([('value_c', 'value_d')]),
OrderedDict([('value_e', 'value_f')])]
通过外部列表理解,这会更好(可能更快):>
[OrderedDict((x,)) for x in map(dict.values,list_of_dicts)]
注意:如果每个词典只有1个值,为什么要使用
OrderedDict
?为什么每个词典只存储一个值?除非这是一个初始化步骤,否则数据模型看起来是可疑的。