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

使用列表推导式从元组创建字典时遭遇TypeError问题求助

问题分析与解决

错误原因

你遇到的TypeError: unhashable type: 'list',根源在于你在字典推导式里把列表当成了字典的键:

lens = {[el[0]]: len(el[1]) for el in enumerate(data)}

这里的[el[0]]是一个包含单个元素的列表,而Python字典的键必须是**可哈希(hashable)**的类型——简单来说就是不可变类型(比如整数、字符串、元组等)。列表是可变类型,无法被哈希,所以不能作为字典的键。你误以为没用到列表,但这里确实用方括号创建了列表。

正确的字典推导式写法

只需要去掉键外面的方括号,直接用索引值作为键即可,和你循环写法里的逻辑保持一致:

lens = {el[0]: len(el[1]) for el in enumerate(data)}

或者更直观的写法,直接解包enumerate返回的元组,代码可读性更高:

lens = {idx: len(item) for idx, item in enumerate(data)}

运行这段代码就能得到你预期的结果:{0: 7, 1: 5, 2: 4}。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 17:37:01