Python如何按规则将两个列表的索引、值存入字典生成目标列表
问题原因
你原有代码的问题集中在字典构造部分:
- 同一个字典内重复定义
value_s键,后面的'value_s':value赋值会覆盖前面存储s索引的赋值,导致value_s最终变成了列表l的元素值 - 缺少
Name_l字段,没有存储列表l的元素值 - 额外注意:你的预期输出中
value_s是字符串格式,需要把s的索引显式转成字符串类型
解决方法
方法1:修正原有循环逻辑
直接调整字典的键定义即可,逻辑清晰易读:
l = ['a','b','c','d'] s = ['q','w'] result = [] for idx_s, val_s in enumerate(s): for idx_l, val_l in enumerate(l): result.append({ "value_s": str(idx_s), "Name_s": val_s, "value_l": idx_l, "Name_l": val_l })
方法2:使用列表推导式简化写法
适合熟悉Python语法的场景,代码更简洁:
l = ['a','b','c','d'] s = ['q','w'] result = [ {"value_s": str(idx_s), "Name_s": val_s, "value_l": idx_l, "Name_l": val_l} for idx_s, val_s in enumerate(s) for idx_l, val_l in enumerate(l) ]
两种方法得到的result都完全符合你给出的预期输出格式。
内容的提问来源于stack exchange,提问作者gm tom
相关产品推荐
相关产品推荐

