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

Python字典推导式如何通过自定义函数动态生成key-value键值对

报错原因

你写的{{i: i+1} for i in range(4)}本质是集合推导式,集合要求所有元素都是可哈希类型,而字典本身不支持哈希,所以才会抛出TypeError: unhashable type: 'dict'错误。

实现方案

根据你的myfunc返回值的不同,有两种常用实现方式:

情况1:myfunc(i)返回(key, value)格式的元组

这是最推荐的写法,直接用dict()构造函数包裹生成器表达式即可,示例如下:

def myfunc(i):
    # 你的自定义逻辑,最终返回元组
    return (i, i+1)

# 生成目标字典
result = dict(myfunc(i) for i in range(4))
print(result) # 输出:{0: 1, 1: 2, 2: 3, 3: 4}

情况2:myfunc(i)返回{key: value}格式的单键字典

如果没法修改myfunc的返回格式,可以用两层循环的字典推导式实现:

def myfunc(i):
    # 你的自定义逻辑,最终返回单键字典
    return {i: i+1}

# 生成目标字典
result = {k: v for i in range(4) for k, v in myfunc(i).items()}
print(result) # 输出:{0: 1, 1: 2, 2: 3, 3: 4}

如果是Python 3.9及以上版本,也可以用归并字典的写法:

from functools import reduce
result = reduce(lambda a, b: a | b, (myfunc(i) for i in range(4)), {})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:18:01