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

为什么遍历defaultdict的values得到的仍是list类型?

关于defaultdict.values()遍历结果的疑问解答

核心误解在于你以为dd.values()会返回所有元素的扁平化列表,但实际上它返回的是字典中每个键对应的值的集合——在你的代码里,每个键的值本身就是list类型,所以遍历dd.values()拿到的是完整的列表对象。

具体拆解:

  • 你用defaultdict(list)创建的字典,每个键对应的值默认是列表。你给键'a'追加了1和2,所以dd['a']本身就是[1,2]这个列表。
  • dd.values()在Python3中返回的是dict_values视图对象,它存储的是字典里每个键对应的完整值,也就是这里的[1,2],而不是把所有值拆成单个元素拼接成的新列表。
  • 所以遍历这个视图时,每次循环的d就是对应键的完整值,也就是那个列表[1,2],而不是单个的1或2。

如果要遍历所有单个元素,需要嵌套遍历:

from collections import defaultdict

dd = defaultdict(list)
dd['a'].append(1)
dd['a'].append(2)

for val_list in dd.values():
    for num in val_list:
        print(num)

运行这段代码就会依次输出1和2,每个都是单个值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 03:15:41