如何在Python字典中添加数组?数据库场景实现求助
问题解决:给Python字典添加包含子字典的数组字段
现有代码与输出
我正在从数据库条目生成Python字典,现有实现代码:
import json result = [] for row in rows: d = dict() d['first'] = row[0] d['second'] = row[1] result.append(json.dumps(d, indent=3, default=str))
当前输出结果:
{'first': 1, 'second': 2 }
需求目标
希望给字典添加数组字段,让输出格式变为:
{'first': 1, 'second': 2, 'third': [{'somekey': row[2]}] }
错误代码问题分析
尝试的代码无法运行,问题出在两处:
import json result = [] for row in rows: d = dict() d['first'] = row[0] d['second'] = row[1] d['third'] = [] d['third'][somekey] = row[2] # 错误点 result.append(json.dumps(d, indent=3, default=str))
- 列表只能通过数字索引访问,不能直接用字符串键赋值,会触发
TypeError。 somekey作为字段名需要用引号包裹成字符串,否则会被当成未定义变量,触发NameError。
正确解决方案
有两种简洁的实现方式:
方式一:直接赋值包含子字典的列表
import json result = [] for row in rows: d = dict() d['first'] = row[0] d['second'] = row[1] # 直接创建包含目标子字典的列表并赋值 d['third'] = [{'somekey': row[2]}] result.append(json.dumps(d, indent=3, default=str))
方式二:分步创建列表与子字典
适合后续需要往third列表中添加更多元素的场景:
import json result = [] for row in rows: d = dict() d['first'] = row[0] d['second'] = row[1] d['third'] = [] # 创建子字典后追加到列表 sub_dict = {'somekey': row[2]} d['third'].append(sub_dict) result.append(json.dumps(d, indent=3, default=str))
内容的提问来源于stack exchange,提问作者mrnobody
相关产品推荐
相关产品推荐

