将有序字典转换为其他格式

问题描述 投票:0回答:1

我需要以最小的时间复杂性将给定的有序字典列表转换为其他格式。复制示例代码:

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')])]
python list csv dictionary
1个回答
0
投票

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

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

现在是最终结果,没有循环,唯一的选择是maplambda,但很丑陋

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

© www.soinside.com 2019 - 2024. All rights reserved.