繁体   English   中英

将有序字典转换为不同格式

[英]Convert ordered dictionary to different format

我需要以最小的时间复杂度以不同的格式转换给定的有序字典列表。 复制示例代码:

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')])]

需要将上述内容转换为以下内容(无需使用 EXPLICIT FOR LOOP ):

convertedDictionary = [OrderedDict([('value_a','value_b')]),
                       OrderedDict([('value_c','value_d')]),
                       OrderedDict([('value_e','value_f')])]

第一步:获取列表:足够简单的将dict.values映射到 dicts:

>>> list(map(dict.values,list_of_dicts))
[['value_a', 'value_b'], ['value_c', 'value_d'], ['value_e', 'value_f']]

现在对于最终结果,没有循环,唯一的选择是使用lambda map ,但它很难看

>>> 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 为什么每个字典只存储一个值? 除非这是一个初始化步骤,否则数据模型看起来很可疑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM