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

Python使用函数式编程按奇偶规则将列表转为字典如何实现

问题解决:Python函数式实现列表转指定规则字典

错误原因

你的代码核心问题出在map的输出结构不符合dict构造的要求:
map会将每个输入元素映射为单个输出元素,奇数元素映射为二元组(x,x)符合要求,但偶数元素映射为包含两个二元组的chain迭代器,导致传入dict的可迭代序列结构为[(1,1), <chain迭代器>, (3,3)]。dict处理chain迭代器时,会把它本身当成一个二元可迭代对象,取第一个元素(4,2)作为键、第二个元素(6,2)作为值,就得到了你看到的错误输出。

正确实现思路

需要先把每个元素生成的键值对集合全部展平为一维的二元组序列,再传给dict构造,使用itertools.chain.from_iterable即可完成展平操作。

代码实现

from itertools import chain

print(
    dict(
        chain.from_iterable(
            map(
                lambda x: [(x, x)] if x % 2 == 1 else [(x*2, x), (x*3, x)],
                [1, 2, 3]
            )
        )
    )
)

如果偏好更简洁的写法,也可以用字典推导式实现,逻辑更直观:

print({k: x for x in [1,2,3] for k in ([x] if x%2==1 else [x*2, x*3])})

两种写法的输出均为{1: 1, 4: 2, 6: 2, 3: 3},和你给出的循环代码效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:39:00