Python访问无命名嵌套字典(含列表嵌套)数据的方法求助
首先纠正你那个直接索引的错误写法:["key3"][0].get("subkey2")完全不对,["key3"]是仅包含字符串"key3"的列表,索引[0]拿到的还是字符串"key3",字符串没有get()方法,这行代码运行必然报错。正确逻辑应该是先拿到外层字典对象,比如outer_dict["key3"][0].get("subkey2"),其中outer_dict是你的外层字典变量。
回到你的API请求代码,出现KeyError的核心原因就是TripInfo里根本没有"subkey3"这个键,或者你拼写错误(比如大小写、下划线位置不对)。给你几个实用解决步骤:
格式化打印TripInfo的完整结构,直观确认所有键名:
import json print(json.dumps(TripInfo, indent=2, ensure_ascii=False))缩进排版后的输出能清晰展示所有键和嵌套层级,帮你确认"subkey3"是否存在,或者正确的键名是什么。
用字典的
get()方法替代直接索引,避免KeyError同时可设置默认值:# 键不存在时返回None,不会触发报错 print(TripInfo.get("subkey3")) # 也可以指定自定义默认值 print(TripInfo.get("subkey3", "未找到目标键"))检查API请求URL:你写的
url ="206.109.266.4:20000/announcements?$sort[createdAt]=-1"缺少协议头(http://或https://),正常情况下requests会报错,如果你实际运行能拿到数据,应该是已经补全了协议头,建议后续写URL时统一加上,避免潜在问题。
另外你提到的"无命名嵌套字典在列表内、外层字典无命名",本质就是字典嵌套列表,列表内再嵌套字典的结构,访问逻辑固定为:外层字典[key] → 得到列表 → 列表[index] → 得到内层字典 → 内层字典[subkey],只要每一步的结构和键名正确就不会出问题。
内容的提问来源于stack exchange,提问作者LordDukeofEastRand

