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

Python按指定键合并字典列表值 解决unhashable type:list报错

报错根因

unhashable type: 'list' 报错是因为你在做分组聚合时,误将可变类型的列表(也就是favorite_color字段的值)作为了字典键/集合元素。Python中只有不可变类型(字符串、数字、元组等)支持哈希运算,能作为字典键使用,列表不满足这个要求。

实现方案

聚合时固定用name字段作为唯一分组键,遍历原始数据时把同名字段下的所有颜色值合并,最后转换为目标字典列表结构即可,不需要对列表做哈希操作。

可直接运行的代码:

from collections import defaultdict

# 原始输入数据
source_data = [
    {'name': 'john doe', 'favorite_color': ['red']},
    {'name': 'jane doe', 'favorite_color': ['pink']},
    {'name': 'john doe', 'favorite_color': ['blue', 'green']},
    {'name': 'jane doe', 'favorite_color': ['grey', 'white']}
]

color_map = defaultdict(list)
for entry in source_data:
    # 用字符串类型的name做键,完全规避列表哈希问题
    color_map[entry['name']].extend(entry['favorite_color'])

# 组装为目标格式
final_result = [
    {"name": user, "favorite_color": color_list}
    for user, color_list in color_map.items()
]
输出验证

执行代码后得到的输出和需求结构完全匹配:

[
    {'name': 'john doe', 'favorite_color': ['red', 'blue', 'green']},
    {'name': 'jane doe', 'favorite_color': ['pink', 'grey', 'white']}
]

你给出的预期示例存在两处笔误:一是jane done为拼写错误,正确应为jane doe;二是字典括号错位,把favorite_color键写到了字典外部,上述代码已经修正了结构问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 09:51:25