python字典中的重复键

python字典中的重复键,python,Python,我在Python的官方文档中读到了这一点 最好将字典视为一组键:值对,要求键是唯一的(在一个字典中) 但是当我运行这个代码时 dic={"a":1,"b":2,"a":3,"a":2,"a":4,"a":5} print(dic["a"]) 我总是得到5作为输出。我想知道为什么 您刚刚在文档中的引用中回答了这个问题-键是唯一的,因此“a”不断被重新分配-并且只保留最后一个值-在您的情况下是5如果您有一个dict文本(在{}中),并且一个键出现多次,最后一个会“覆盖”前面的值。这只是Python

我在Python的官方文档中读到了这一点

最好将字典视为一组键:值对,要求键是唯一的(在一个字典中)

但是当我运行这个代码时

dic={"a":1,"b":2,"a":3,"a":2,"a":4,"a":5}
print(dic["a"])

我总是得到5作为输出。我想知道为什么

您刚刚在文档中的引用中回答了这个问题-键是唯一的,因此“a”不断被重新分配-并且只保留最后一个值-在您的情况下是5如果您有一个dict文本(在
{}
中),并且一个键出现多次,最后一个会“覆盖”前面的值。这只是Python的第一个版本中做出的决定

打印整个dict以查看:

>>> dic={"a":1,"b":2,"a":3,"a":2,"a":4,"a":5}
>>> dic
{'a': 5, 'b': 2}
见,我的重点:

如果给出了以逗号分隔的键/基准对序列,则它们是 从左到右计算以定义字典的条目: 每个键对象都用作字典中的键来存储 相应的数据这意味着您可以指定相同的键 在键/基准列表中多次,以及最终字典的值 该密钥将是最后一个给定的密钥。


只是一个猜测:它按顺序计算这些对,因此您不断地覆盖“a”的值,这与文档并不矛盾:dict只需要保留唯一的键,因此它决定只保留最后一对