如何正确编写Python函数实现按指定key从字典列表提取值生成嵌套列表
问题根因
你的代码存在两个核心问题:
- 没有为每个输入字典单独创建子列表,所有匹配到的值都直接追加到了外层列表
lol中,最终只能得到一维结构 - 三重循环的逻辑会按字典本身的key遍历顺序取值,无法严格保证输出顺序和第一个参数的key顺序完全一致,存在顺序错误隐患
- 代码中定义的
a、i变量没有实际作用,可以删除
修正后代码
易读版
def make_lists(s, lod): lol = [] # 遍历每一个输入字典 for x in lod: sub_list = [] # 严格按第一个参数的key顺序取对应值 for k in s: # 如果需要兼容字典缺失key的场景,可替换为x.get(k) sub_list.append(x[k]) lol.append(sub_list) return lol
简化版(列表推导实现)
def make_lists(s, lod): return [[x[k] for k in s] for x in lod]
效果验证
调用示例2测试:
print(make_lists(['Hint', 'Num'], [{'Hint': 'Length 2 Not Required', 'Num' : 8675309}, {'Num': 1, 'Hint' : 'Use 1st param order'}] ))
输出结果:
[['Length 2 Not Required', 8675309], ['Use 1st param order', 1]]
完全符合预期要求。
内容的提问来源于stack exchange,提问作者Anshul Dayavaan
相关产品推荐
相关产品推荐

