在Python中,字典的键(key)应该是唯一的。为什么你可以这样做呢...
d = {'a' : 'b', 'a' : 'c'}
这不应该抛出某种错误吗?
在Python中,字典的键(key)应该是唯一的。为什么你可以这样做呢...
d = {'a' : 'b', 'a' : 'c'}
这不应该抛出某种错误吗?
>>> d = {'a' : 'b', 'a' : 'c'}
>>> d
{'a': 'c'}
>>> dis.dis("d = {'a' : 'b', 'a' : 'c'}")
1 0 BUILD_MAP 2
3 LOAD_CONST 0 ('b')
6 LOAD_CONST 1 ('a')
9 STORE_MAP
10 LOAD_CONST 2 ('c')
13 LOAD_CONST 1 ('a')
16 STORE_MAP
17 STORE_NAME 0 (d)
20 LOAD_CONST 3 (None)
23 RETURN_VALUE
>>> dis.dis("d={};d['a']='b';d['a']='c'")
1 0 BUILD_MAP 0
3 STORE_NAME 0 (d)
6 LOAD_CONST 0 ('b')
9 LOAD_NAME 0 (d)
12 LOAD_CONST 1 ('a')
15 STORE_SUBSCR
16 LOAD_CONST 2 ('c')
19 LOAD_NAME 0 (d)
22 LOAD_CONST 1 ('a')
25 STORE_SUBSCR
26 LOAD_CONST 3 (None)
29 RETURN_VALUE
如您所见,两种初始化的方式有些相似:首先存储第一个键值对,然后是第二个。
不会的,它只是覆盖键。
>>> d = {'a' : 'b', 'a' : 'c'}
>>> d
{'a': 'c'}
覆盖键是错误吗?不应该是的。否则,当您尝试在字典中更新事物时,会出现无数个错误。我认为没有错误的原因是这样的(用英语解释代码):
d是一个字典。 有一个键和一个值。 ('a'和'b') 将它们配对并输入,同时保存它们。 新条目('a'和'c') 键'a'已经存在;更新值。