我正在使用python 3.7。 我有这样的字典。
dict = { 'a' :2 , 'a' :1 , 'b':3 , 'c':4}
print(dict)
O/P ={'a' : 1 , 'b' :2 , 'c':3 }
现在在python 3.7中,字典必须保持插入顺序。因此预期的o / p将为{'a':2,'b':3,'c':4},但是('a',2)正在从字典中删除,而不是('a',1)。为什么会发生这种情况?是否有删除python中重复键的规则?
答案 0 :(得分:1)
来自Python文档:
对字典的主要操作是用一个键存储一个值并提取给定键的值。也可以删除带有del的key:value对。如果使用已在使用的密钥进行存储,则与该密钥关联的旧值将被忘记。使用不存在的键提取值是错误的。
答案 1 :(得分:1)
维护插入顺序与不同键有关:
>>> dct = {'a': 1, 'b': 2} # do NOT shadow built-in name 'dict'
>>> print(dct)
{'a': 1, 'b': 2}
# and not
{'b': 2, 'a': 1} # which was totally possible before Python3.6
当收到相同键的多个值时,提供的最后一个将获胜:
>>> dct = {'a': 3, 'a': 1, 'b': 2}
>>> print(dct)
{'a': 1, 'b': 2}
这类似于以下情况:
>>> dct = {}
>>> dct['a'] = 3
>>> dct['a'] = 1
>>> dct['b'] = 2
由于“插入顺序”,您希望dct['a']
现在变成3
吗?当然不是!
答案 2 :(得分:0)
分配给键的值可以是任何值,甚至可以重复,因为它仅仅是一个值。但是,键类似于变量名。与许多编程语言一样,如果在相同的作用域或方法中再次使用变量名,则第一个变量及其值将被第二个变量覆盖,因为它是最新的变量。
在这种情况下,如果您愿意的话,将不同的键(将键视为标识符)分配给相同的值可能更合适。像这样
dict = { 2: 'a', 1: 'a', 3:'b', 4:'c'}
print(dict)
O/P = {1: 'a', 2: 'a', 3: 'b', 4: 'c'}