变量作为字典中的键传递

时间:2017-03-13 12:49:09

标签: python python-3.x dictionary

我们说我定义了一个变量else,然后将其传递给字典a = 42。 Python如何读取di = {a: 'fourty-two'}中的密钥?
 di作为a所指的变量或数字?

如果该密钥只是对某个数字的引用,请重新定义(让我们说a)更改a = 10中的密钥吗? 有人可以向我澄清一下吗? 谢谢!

编辑:
当我将变量di的值更改为10时,为什么a中的键无法更改

1 个答案:

答案 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)

这种方法会在将其值分配给新密钥的过程中自动删除旧密钥。