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

如何访问Python字典嵌套列表内的字典指定键

「字典-列表-字典」嵌套结构内层键访问方案

你原有代码的问题出在两个地方:

  • 遍历people.items()时已经拿到了键和对应的值,你没有用返回的值,反而重复通过people[i]取值,属于冗余操作
  • 列表的下标从0开始计数,你用外层字典的键i(值为1、2)作为列表索引取值,既不能保证拿到存Sex的字典,就算拿到了对应字典,也没有继续通过键名取最终的值,自然得不到预期结果。

方案1:按固定索引取值(适配你当前的示例结构)

你的示例里,每个用户对应的属性列表顺序固定:第0位是name字典、第1位是Age字典、第2位是Sex字典,直接按索引取即可:

people = {1: [{"name": 'John'}, {'Age': '27'}, {'Sex': 'Male'}],
          2: [{"name": 'Marie'}, {'Age': '22'}, {'Sex': 'Female'}],
              }

for user_id, attr_list in people.items():
    # 索引2对应列表里第三个元素,也就是存Sex的字典
    sex_info = attr_list[2]
    # 从字典中通过键名取到性别的值
    user_sex = sex_info['Sex']
    print(f"ID为{user_id}的用户性别:{user_sex}")

逻辑说明:

  • 遍历外层字典时,user_id对应外层的数字键,attr_list直接对应当前键绑定的属性列表,不需要重复查字典
  • 按已知的列表位置拿到存性别的小字典后,通过['Sex']键访问就能拿到最终值。

方案2:遍历列表匹配目标键(适配列表顺序不固定的场景)

如果后续列表里的字典顺序可能变动,靠固定索引取值会出错,这时候可以遍历内层列表匹配目标键:

people = {1: [{"name": 'John'}, {'Age': '27'}, {'Sex': 'Male'}],
          2: [{"name": 'Marie'}, {'Age': '22'}, {'Sex': 'Female'}],
              }

for user_id, attr_list in people.items():
    user_sex = None
    # 逐个检查列表里的字典
    for single_attr in attr_list:
        if 'Sex' in single_attr:
            user_sex = single_attr['Sex']
            break
    print(f"ID为{user_id}的用户性别:{user_sex}")

逻辑说明:

  • 不管Sex字段在列表的哪个位置,只要遍历到包含Sex键的字典就能取到值,不会因为顺序变化报错
  • 找到目标值后直接通过break终止内层循环,避免无意义的遍历。

补充建议:你当前把每个用户属性拆成独立字典塞进列表的结构设计比较冗余,更合理的结构是把同一个用户的属性合并到同一个字典里,比如写成people = {1: {"name": "John", "Age": "27", "Sex": "Male"}, 2: {"name": "Marie", "Age": "22", "Sex": "Female"}},这种结构下直接通过people[user_id]['Sex']就能一步拿到目标值,不需要处理中间的列表逻辑。


内容的提问来源于stack exchange,提问作者Yes Idk How To Code

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 04:12:21