Python中从API逐值构建字典列表的最优数据结构选型
解决方案
要把这种以维度元组为键的字典转换成目标格式的字典列表,核心是把元组形式的维度值映射回对应的dX键,再和指标字典合并。具体操作如下:
1. 先确定维度键名的顺序
你需要提前定义好维度对应的键名列表,比如维度是d1、d2、d3,就写:
dim_keys = ["d1", "d2", "d3"]
这个列表的顺序必须和你字典键中元组的元素顺序完全对应。
2. 遍历字典完成格式转换
遍历你构建的字典,对每一组键值对执行三步操作:
- 将维度元组和
dim_keys配对,生成维度键值对字典 - 把维度字典和指标字典合并
- 将合并后的字典加入结果列表
示例代码:
from collections import defaultdict # 模拟已构建好的defaultdict数据 data_dict = defaultdict(dict) data_dict[("dvalue", "dvalue", "dvalue")] = {"m1": "value", "m2": "value", "m3": "value"} data_dict[("dvalue2", "dvalue2", "dvalue2")] = {"m1": "value2", "m2": "value2", "m3": "value2"} # 定义维度键名 dim_keys = ["d1", "d2", "d3"] # 转换为目标格式的列表 result = [] for dim_tuple, metrics in data_dict.items(): # 生成维度对应的字典 dim_dict = dict(zip(dim_keys, dim_tuple)) # 合并维度与指标字典 combined_dict = {**dim_dict, **metrics} result.append(combined_dict) # 输出结果 print(result)
运行后得到的结果就是你想要的格式:
[ {'d1': 'dvalue', 'd2': 'dvalue', 'd3': 'dvalue', 'm1': 'value', 'm2': 'value', 'm3': 'value'}, {'d1': 'dvalue2', 'd2': 'dvalue2', 'd3': 'dvalue2', 'm1': 'value2', 'm2': 'value2', 'm3': 'value2'} ]
补充说明
- 不管维度数量多少,只要保证
dim_keys的长度和元组元素数量一致,zip就能自动完成配对。 - 这种转换方式是线性遍历+字典合并,效率很高,完全适配你处理大量数据的需求,比反复向DataFrame插入数据更高效。
内容的提问来源于stack exchange,提问作者Gabriel
相关产品推荐
相关产品推荐

