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

如何用Python引用YAML块特定条目并遍历家庭成员?

问题解决方法

一、打印Jake的妈妈名字

直接遍历persons["people"]找到名为Jake的条目,再提取其家庭成员中的妈妈字段:

# 找到Jake并打印他妈妈的名字
for person in persons["people"]:
    if person["name"] == "Jake":
        print("Jake的妈妈是:", person["family"][0]["mother"])
        break

解释:person["family"]是一个列表(YAML里-开头表示列表),里面只有一个字典,所以用[0]取出这个字典,再通过["mother"]拿到对应值。

二、遍历输出每个人的所有家庭成员

你的原代码错误在于:for a in persons["people"]循环的是每个完整的人员字典(比如{"name":"John", "age":"20", ...}),而不是字典的键名。正确的写法是先遍历每个人员,再取出其family字段,遍历家庭成员:

# 遍历每个人的家庭成员
for person in persons["people"]:
    print(f"\n{person['name']}的家庭成员:")
    # 取出当前人员的家庭列表,遍历其中的家庭字典
    for family_member_dict in person["family"]:
        # 遍历字典的键值对,打印成员关系和名字
        for relation, name in family_member_dict.items():
            print(f"{relation}: {name}")

解释:

  1. 第一层循环for person in persons["people"]:逐个取出每个人员的字典数据。
  2. 第二层循环for family_member_dict in person["family"]:取出当前人员的家庭列表中的字典(你的YAML里每个家庭只有一个字典条目)。
  3. 第三层循环遍历字典的键值对,输出成员关系和对应名字。

原代码错误原因

你写的for a in persons["people"]中,a是整个人员字典,不是"name"/"age"/"family"这些键名,所以a == "family"永远不成立,自然不会进入后续循环。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 04:25:38