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

Python字典使用疑问:对象键取值与items()遍历报错问题

问题分析与解答

字典结构确认

你的理解完全正确:

  • instance_dict 的键是Python实例对象(比如<segment_display.displayScore1>这类具体对象,不是字符串)
  • 每个键对应的值是嵌套字典(格式如{'show_43.segment_display_player.displayScore1': True})或者空字典

报错原因

你用for a in instance_dict.items()遍历时,a是一个键值对元组(格式为(键对象, 对应的值字典))。而instance_dict.get(key)要求传入的是字典的键(也就是那些实例对象),不是元组。你用instance_dict.get(a)相当于拿元组当键去查字典,自然找不到对应条目,所以报错。

正确的遍历用法

两种常用的正确写法:

  1. 遍历键,再单独取值:
for key_obj in instance_dict:
    value_dict = instance_dict.get(key_obj)
    # 也可以直接用instance_dict[key_obj],找不到键会抛KeyError,get则返回None(或指定默认值)
  1. 直接遍历键值对,同时拿到键和值:
for key_obj, value_dict in instance_dict.items():
    # 这里value_dict已经是对应的值,无需再调用get
    print(key_obj, value_dict)

额外验证技巧

如果要判断某个对象是不是instance_dict的键,可以用in操作符:

if some_display_instance in instance_dict:
    print("该对象是字典的键")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 16:02:32