你好,我相信你不能做到这一点,但我想知道是否可以有一个字典,每个值都可以通过两个键访问,而无需复制字典。
我想要这样做的原因是,这两个键将表示相同的事物,但其中一个将是缩短版本,例如,“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]}
如果您想存储不可变类型,例如字符串和元组,则可能需要创建一个对象来存储它们,并在该对象内部更改。
d = {1: (1, 2, 3)}
,然后d[2] = d[1]
。可变性无关紧要。 - agfdict
中存储两次对象是否复制一个对象是不同的问题。 - agf