使用zip()将等长列表转字典,为何生成的两个字典长度不同?
问题原因解析
这是因为Python字典的键具有唯一性——当同一个键多次出现时,后面的键值对会直接覆盖前面的条目,最终每个键只会保留最后一次对应的取值。
针对字典a的情况
wordslist中存在大量重复单词(比如"I"、"you"、"will"等都重复出现多次),用dict(zip(wordslist, keylist))生成字典时,每遇到重复单词,就会用该单词最后一次对应的keylist值覆盖之前的条目。统计wordslist里的唯一单词数量,正好是25个,所以字典a的长度为25。
针对字典b的情况
keylist中的元素是数字,其中唯一的数字只有1、2、3、4、5、6、7、8这8个,同理,每个数字最后一次对应的wordslist单词会被保留,前面的都被覆盖,因此字典b的长度为8。
简化示例验证
用一个小例子就能直观看到这个机制:
keys = ['x', 'x', 'y'] values = [10, 20, 30] result = dict(zip(keys, values)) # 输出结果为 {'x': 20, 'y': 30},重复的'x'只保留最后一次的取值
内容的提问来源于stack exchange,提问作者Godfather_NKP
相关产品推荐
相关产品推荐

