Python处理LevelDB数据时如何按名称分组将数组存入字典
问题原因
- 核心错误1:Python列表的
append()方法是原地修改列表,返回值为None,你直接把[].append(str(X))赋值给map字段,自然得到的就是None - 核心错误2:每次遇到同name的条目时,你直接覆盖了整个字典结构,之前存的map值会被直接清空,没有做追加处理
实现代码
首先在遍历循环外初始化空字典:
currentMaps = {}
然后把你原来的赋值逻辑替换成如下代码,放在if data.get("name") != None:的代码块内:
name = str(data.get("name")) map_val = str(X) cols = str(data.get("col")) rows = str(data.get("row")) if name not in currentMaps: # 首次遇到该name时初始化结构 currentMaps[name] = { "name": name, "map": [map_val], "cols": cols, "rows": rows } else: # 已存在该name时,仅追加map值 currentMaps[name]["map"].append(map_val)
说明
如果同name下的cols、rows可能出现不一致的情况,你可以根据自己的业务需求补充冲突处理逻辑,比如保留第一个值、覆盖更新、或者也存为数组都可以。
内容的提问来源于stack exchange,提问作者Dj Martin
相关产品推荐
相关产品推荐

