我们说我定义了一个变量else
,然后将其传递给字典a = 42
。 Python如何读取di = {a: 'fourty-two'}
中的密钥?
di
作为a
所指的变量或数字?
如果该密钥只是对某个数字的引用,请重新定义(让我们说a
)更改a = 10
中的密钥吗?
有人可以向我澄清一下吗?
谢谢!
编辑:
当我将变量di
的值更改为10时,为什么a
中的键无法更改
答案 0 :(得分:0)
字典中的键是不可变的。你不能让它们变量。 考虑:
>>> a = 42
>>> di = {a:'forty-two'}
>>> di
{42: 'forty-two'}
字典本身只有42
作为关键字。您在设置字典时使用a
这一事实非常无关紧要。同样,由于a
为42,如果我写b = a + 1
,则b
将为43
,如果我稍后更改a
,则不会更改此事实到10
。在这种情况下,b
不会神奇地成为11
。
如果您确实要将a
绑定到新号码并使用该新号码作为键,则需要手动修改字典:
>>> old_a = a #store old value of a
>>> a = 10 #assign new value to a
>>> di[a] = di[old_a] #assign value to new key
>>> del(di[old_a]) #delete old key-value pair
>>> di
{10: 'forty-two'}
这有点令人费解,这表明它不是非常pythonic,并且可能有更好的方法来做你想做的任何事情。
开启编辑使用.pop()
可以简化交换密钥的过程,如@ŁukaszRogalski,在上面的评论中指出:
old_a = a
a = 10
di[a] = d.pop(old_a)
这种方法会在将其值分配给新密钥的过程中自动删除旧密钥。