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

字典推导式中双层for循环异常,如何生成预期有序键值对?

修正字典推导式以生成预期映射

原字典定义

recipe = {
    "butter chicken": "Value",
    "pepper chicken": "Value",
    "garlic chicken": "Value",
    "ginger chicken": "Value",
}

原推导式问题

你使用的推导式:

{key : value for key in range(1, len(recipe)+1) for value in recipe}   

输出结果为:

{1: 'ginger chicken', 2: 'ginger chicken', 3: 'ginger chicken', 4: 'ginger chicken'}

问题出在嵌套循环:外层每遍历一个数字key,内层会完整遍历一遍recipe的所有键,最终每个数字key都会被内层循环的最后一个值覆盖。

修正后的推导式

有两种简洁的实现方式:

方式一:使用enumerate(推荐)

利用enumerate直接获取从1开始的索引和对应的键名:

{i: dish for i, dish in enumerate(recipe, start=1)}

方式二:使用zip配对序列

将数字范围和recipe的键序列配对后构建字典:

{num: dish for num, dish in zip(range(1, len(recipe)+1), recipe)}

预期输出

两种方式都会得到目标结果:

{1: 'butter chicken', 2: 'pepper chicken', 3: 'garlic chicken', 4: 'ginger chicken'}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 10:45:34