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

为何Python字典推导式仅返回3个元素?两种写法差异解析

字典推导式结果差异的原因分析

两段Python代码用字典推导式处理同一列表,结果元素数量差异明显,核心原因在于字典键的唯一性,以及两段推导式中键值的位置完全相反:

第一段代码及输出

num_list1 = [6,34,-55,65,2,0,-6,77,66,55,44,33]
new_dict = {'positive' if key > 0 else 'negative' if key < 0 else 'zero': key for key in num_list1}
print(new_dict)

输出:

{'positive': 33, 'negative': -6, 'zero': 0}

第二段代码及输出

num_list1 = [6,34,-55,65,2,0,-6,77,66,55,44,33]
new_dict = {key: 'positive' if key > 0 else 'negative' if key < 0 else 'zero' for key in num_list1}
print(new_dict)

输出:

{6: 'positive', 34: 'positive', -55: 'negative', 65: 'positive', 2: 'positive', 0: 'zero', -6: 'negative', 77: 'positive', 66: 'positive', 55: 'positive', 44: 'positive', 33: 'positive'}

差异原因

Python字典的键具有唯一性,一旦出现重复的键,后出现的键值对会直接覆盖之前的:

  • 第一段推导式中,键是分类标签(仅'positive'、'negative'、'zero'三种),值是列表中的数字。遍历列表时,每遇到同标签的数字,就会用新数字覆盖该标签对应的旧值,最终每个标签只保留最后一次遍历到的数字,因此结果只有3个元素。
  • 第二段推导式中,键是列表里的数字(原列表所有数字均不重复),值是对应分类标签。由于所有键都唯一,遍历过程中没有覆盖发生,因此保留了列表全部12个元素的键值对。

内容的提问来源于stack exchange,提问作者Сергей Галанов

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 10:18:32