You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中遍历嵌套字典并自动赋值变量?

可行的解决方案

你的需求完全可以实现,先纠正下现有代码的问题:内层for循环会抛出ValueError,因为people[person].values()返回的是单个包含三个元素的序列,而非可迭代的三元组集合,直接用多变量遍历会报错。

下面是几种简洁的实现方式:

方法1:直接解包字典值(依赖键的顺序)

如果能保证每个嵌套字典的键顺序始终是name、age、occupation,可以直接解包values()返回的序列:

people = {
    1: {"name": "Simon", "age": 20, "occupation": "Data scientist"},
    2: {"name": "Kate", "age": 30, "occupation": "Software engineer"},
    3: {"name": "George", "age": 22, "occupation": "Manager"},
}

for person_data in people.values():
    name, age, occupation = person_data.values()
    print(name, age, occupation)

注意:Python 3.7+字典会保留插入顺序,但如果后续嵌套字典的键顺序改变,解包结果会出错,适合固定结构的简单场景。

方法2:按键取值(不依赖顺序,更稳妥)

直接通过键提取对应值,完全避免顺序问题,代码可读性也更高:

for person_data in people.values():
    name = person_data["name"]
    age = person_data["age"]
    occupation = person_data["occupation"]
    print(name, age, occupation)

也可以写成一行解包的简洁形式:

for person_data in people.values():
    name, age, occupation = person_data["name"], person_data["age"], person_data["occupation"]
    print(name, age, occupation)

方法3:用数据类结构化处理(适合复杂场景)

如果需要频繁使用这些变量,或者后续有扩展需求,可以用dataclass将字典转为结构化对象:

from dataclasses import dataclass

@dataclass
class Person:
    name: str
    age: int
    occupation: str

people = {
    1: {"name": "Simon", "age": 20, "occupation": "Data scientist"},
    2: {"name": "Kate", "age": 30, "occupation": "Software engineer"},
    3: {"name": "George", "age": 22, "occupation": "Manager"},
}

for person_data in people.values():
    person = Person(**person_data)
    print(person.name, person.age, person.occupation)

这种方式不仅自动完成变量赋值,还能获得类型提示和结构化的对象操作能力,适合中大型项目。

内容的提问来源于stack exchange,提问作者RishV

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 07:12:47