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

如何用一行Lambda表达式实现指定的Python字典生成逻辑?

一行代码实现成对键值映射的字典生成

需求是生成键值成对映射的字典:{0: 1, 1: 0, 2: 3, 3: 2, 4: 5, 5: 4, 6: 7, 7: 6, 8: 9, 9: 8},原循环实现的函数如下:

def make_dict():
    y = {}
    for i in range(0, 10, 2):
        y[i] = i+1
        y[i+1] = i
    return y

你尝试的字典推导式无法得到预期结果,问题出在range(0, 10, 2)只遍历了偶数,推导式里的else分支根本不会触发,最终只生成了偶数到奇数的映射,缺少反向的奇数到偶数的条目。

解决方案

方式1:直接遍历所有数字的字典推导式

这是最简洁的实现:

{i: i+1 if i % 2 == 0 else i-1 for i in range(10)}

遍历0到9的每个数字,偶数键对应i+1,奇数键对应i-1,正好生成预期的成对映射。

方式2:用Lambda包装成函数

如果需要和原函数一样通过调用函数获取结果,可以用Lambda包装上述推导式:

make_dict = lambda: {i: i+1 if i % 2 == 0 else i-1 for i in range(10)}

调用make_dict()即可得到目标字典。

方式3:基于原循环逻辑展开的推导式

如果想贴合原循环中处理成对数字的思路,可以用嵌套生成器展开键值对:

{k: v for pair in [(i, i+1) for i in range(0,10,2)] for k, v in [(pair[0], pair[1]), (pair[1], pair[0])]}

先生成所有(偶数, 奇数)的元组,再把每个元组的正反映射都加入字典。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 14:57:41