如何遍历Python嵌套字典 提取子字典值依次赋值给对应变量
嵌套字典遍历提取值实现方法
注意不要使用dict作为自定义变量名,会覆盖Python内置的字典类型,建议替换为其他名称比如source_data。
核心实现逻辑
先取字典中result键对应的列表,逐次遍历列表内的每一个子字典,不管子字典数量是2个还是更多,都可以在循环体内完成值的提取和赋值,完全适配子元素数量不固定的场景。
代码实现
基础版本(循环内直接使用变量)
如果只是需要在遍历到每个子字典时,临时使用对应三个值做业务处理,直接在循环内解包赋值即可,变量会逐轮被当前子字典的值覆盖,和你给出的期望赋值逻辑完全一致:
source_data = {'result': [{'a1': 'one', 'a2': 'two', 'a3': '2'}, {'b1': 'three', 'b2': 'one', 'b3': '5'}]} for sub_item in source_data['result']: # 按子字典内值的存储顺序,依次赋值给三个变量 res1, res2, res3 = sub_item.values() # 下方写你需要对三个变量执行的操作,这里用打印示例效果 print(f"res1 = {res1}") print(f"res2 = {res2}") print(f"res3 = {res3}") print("-"*20)
运行输出如下:
res1 = one res2 = two res3 = 2 -------------------- res1 = three res2 = one res3 = 5 --------------------
注意事项
- 如果你的运行环境低于Python3.7,字典默认不保证键值对的存储顺序,直接用
.values()可能出现取值错位,这时候可以显式指定每个子字典要提取的键顺序,保证取值准确。 - 如果需要保留所有子字典提取出的结果,不要在循环外用固定变量名接收(会被最后一轮循环的值覆盖),建议把每轮的结果存入列表统一管理:
result_list = [] for sub_item in source_data['result']: res1, res2, res3 = sub_item.values() result_list.append( {"res1": res1, "res2": res2, "res3": res3} ) # 取第一个子字典的res2值:result_list[0]["res2"] → 输出 two # 取第二个子字典的res3值:result_list[1]["res3"] → 输出 5
内容的提问来源于stack exchange,提问作者booblik
相关产品推荐
相关产品推荐

