如何动态访问quantity值并乘100,仅用1个for循环完成所有quantity相乘
问题解答
需求说明
你需要实现两个操作:
- 动态访问数据中的数量字段并将值乘以100
- 仅使用1个for循环完成所有数量值的批量运算
参考数据结构如下:
a = {'name': 'abc', 'lines': [ (0, 0, {'product': 'abc', 'qty': 0}), (0, 0, {'product': 'gds', 'qty': 20}), (0, 0, {'product': 'def', 'qty': 100})]}
注:参考结构中数量字段名为
qty,如果实际场景字段名为quantity,修改下文对应字段名即可。
实现方法
1. 单个字段动态访问
直接按数据层级定位即可,示例:
# 取lines列表第2条数据的qty值乘以100,索引从0开始计数 target_value = a['lines'][1][2]['qty'] * 100
如果字段名是动态变量,用法如下:
field_name = 'qty' # 可替换为'quantity'适配其他字段名 target_value = a['lines'][1][2][field_name] * 100
2. 单for循环批量处理所有值
直接遍历a['lines']列表即可,无需嵌套循环,修改原数据的实现代码:
field_name = 'qty' # 仅一层for循环 for line in a['lines']: # line是列表中的三元组,第三个元素为存储qty的字典 line[2][field_name] *= 100 # 验证结果 print([item[2][field_name] for item in a['lines']]) # 输出:[0, 2000, 10000]
如果不需要修改原数据,仅提取计算后的结果,写法如下:
field_name = 'qty' result = [] for line in a['lines']: result.append(line[2][field_name] * 100)
内容的提问来源于stack exchange,提问作者jig
相关产品推荐
相关产品推荐

