密钥的最后一个值获胜。我可以找到的最佳文档在Python
3语言参考的第6.2.7节中:
与list和set的理解相反,dict的理解需要两个表达式之间用冒号分隔,后跟通常的“ for”和“ if”子句。运行理解时,将生成的键和值元素
按它们产生的顺序 插入新字典 中 。
该文档还明确指出,最后一项对于逗号分隔的键/值对(
{1: 1, 1: 2})和字典解包({**{1: 1}, **{1: 2}})都是有效的:如果给出了以逗号分隔的键/基准对序列,则…您可以在键/基准列表中多次指定相同的键,并且该键的最终字典值将是最后给出的值。
双星号
**表示 字典解包 。它的操作数必须是一个映射。每个映射项都添加到新词典中。较新的值将替换较早的键/基准对和较早的字典解包已设置的值。
请注意,正如wim所指出的,如果有相同但不同的键,则第一个键的版本将获胜:
>>> {k: v for k, v in [(1, 1), (1.0, 2.0)]}{1: 2.0}在这里,最终字典的键来自
(1, 1),但值来自
(1.0, 2.0)。



