为何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,提问作者Сергей Галанов
相关产品推荐
相关产品推荐

