4
嗨,我相当肯定你不能这样做,但我想知道如果你可以有一个字典,其中每个值可以通过两个键访问而不需要重复字典。蟒蛇字典 - 每个值的两个键
我想这样做的原因是,两个键将代表相同的东西,但一个会缩短版本,例如。 'TYR'和'Y'将具有相同的值。
嗨,我相当肯定你不能这样做,但我想知道如果你可以有一个字典,其中每个值可以通过两个键访问而不需要重复字典。蟒蛇字典 - 每个值的两个键
我想这样做的原因是,两个键将代表相同的东西,但一个会缩短版本,例如。 'TYR'和'Y'将具有相同的值。
只需在两处放置相同(可变)的对象即可。如果你改变对象,它会在字典中的两个地方改变。唯一的好处是你必须显式地添加和删除它们(你可以创建一些辅助方法)。
In [4]: d = {}
In [5]: c = [1,2]
In [7]: d[1] = c
In [8]: d[2] = c
In [9]: d
Out[9]: {1: [1, 2], 2: [1, 2]}
In [10]: c.append(3)
In [11]: d
Out[11]: {1: [1, 2, 3], 2: [1, 2, 3]}
如果你想存储unmutable类型,如字符串,元组,你可能需要创建对象,将它们存储并更改该对象内。
所有对象只存储一个引用。你可以做'd = {1:(1,2,3)}'然后'd [2] = d [1]'。可变性是无关紧要的。 – agf
@agf在我阅读了您以前的评论之后,更改了一些措辞。像这样存储的元组的东西是你不能在两个地方改变它,你能吗? – rplnt
你根本无法改变它,正确。事实上,你可以做的事情看起来像改变它可能会混淆OP,这是真的,但这与你是否复制一个对象,当你在一个'dict'中存储它两次是不同的问题。 – agf