[英]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.