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

如何遍历嵌套字典并从数组内嵌套字典取值?解决属性报错

解决'list' object has no attribute 'iteritems'报错并实现需求

首先咱们来拆解报错的原因:你代码里的dict1['c']对应的是一个列表(里面嵌套了三个字典),而iteritems()是字典专属的方法,列表根本没有这个属性,所以才会抛出这个错误。

接下来直接修正代码,实现你要的需求——获取'c'对应内容里的第一个值:

方法一:直接索引定位(最简洁)

如果你的需求就是只取'c'列表里第一个元素的第一个值,完全不需要循环,直接索引定位更高效:

dict1 = { 'a': 1, 'b': 2, 'c': [{'aa': 11, 'bb': 22},{'aa': 111, 'bb': 222},{'aa': 1111, 'bb': 2222}] }

# 拿到'c'列表里的第一个字典
first_dict = dict1['c'][0]
# 获取这个字典的第一个值(Python 3.7+字典默认按插入顺序存储,能保证取到第一个键对应的值)
first_value = next(iter(first_dict.values()))
# 打印结果
print(first_value)

运行后会输出11,正好是你要的目标值。

方法二:按你原始思路调整(保留循环逻辑)

如果你坚持要通过循环实现,那得先遍历dict1['c']里的字典元素,同时限制只循环第一次:

dict1 = { 'a': 1, 'b': 2, 'c': [{'aa': 11, 'bb': 22},{'aa': 111, 'bb': 222},{'aa': 1111, 'bb': 2222}] }

# 用[:1]切片只取'c'列表的第一个元素,实现你注释里的"loop only 1 first time"
for item in dict1['c'][:1]:
    # 获取当前字典的第一个值
    first_val = next(iter(item.values()))
    print(first_val)

这段代码同样会输出11,完美匹配你的需求。

补充小提示

  • 如果你还在使用Python 2(不推荐,已淘汰),字典是无序的,要取第一个值得用item.items()[0][1];而且Python 2里列表也没有iteritems()方法,依然会报错。
  • next(iter(dict.values()))是Python 3中获取字典第一个值的高效写法,不需要把所有值转成列表再取索引。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:21:40