Python3 如何将含相同symbol_name的多个字典合并为结构化新字典
问题根源
- 第一种写法的问题:每次遍历到同一个
symbol_name的条目时,都执行data[symbol] = {}重置该币种对应的字典,之前存入的timeframe数据会被直接覆盖,所以只剩最后一个周期的数据 - 第二种写法的问题:把
data = {}放在了循环内部,每遍历一条数据就重置整个结果字典,自然只能得到当前单条的处理结果
解决代码
# 先按symbol分组存储所有周期的属性 grouped = {} for item in query: symbol = item["symbol_name"] timeframe = item["timeframe_name"] # 仅symbol第一次出现时初始化字典,避免覆盖已有数据 if symbol not in grouped: grouped[symbol] = {"symbol_name": symbol} # 拼接周期前缀生成目标键名,写入对应属性值 grouped[symbol][f"{timeframe}_scenario"] = item["scenario"] grouped[symbol][f"{timeframe}_continuity"] = item["continuity"] # 如需列表格式的最终结果,直接取字典的values即可 result = list(grouped.values()) print(result)
效果说明
代码最终输出的result就是你要求的合并后字典列表,键名格式、数据结构完全匹配你给出的目标示例,不会出现数据覆盖、丢失的问题。
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

