2011-09-27 72 views
4

嗨,我相當肯定你不能這樣做,但我想知道如果你可以有一個字典,其中每個值可以通過兩個鍵訪問而不需要重複字典。蟒蛇字典 - 每個值的兩個鍵

我想這樣做的原因是,兩個鍵將代表相同的東西,但一個會縮短版本,例如。 'TYR'和'Y'將具有相同的值。

回答

5

只需在兩處放置相同(可變)的對象即可。如果你改變對象,它會在字典中的兩個地方改變。唯一的好處是你必須顯式地添加和刪除它們(你可以創建一些輔助方法)。

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類型,如字符串,元組,你可能需要創建對象,將它們存儲並更改該對象內。

+1

所有對象只存儲一個引用。你可以做'd = {1:(1,2,3)}'然後'd [2] = d [1]'。可變性是無關緊要的。 – agf

+0

@agf在我閱讀了您以前的評論之後,更改了一些措辭。像這樣存儲的元組的東西是你不能在兩個地方改變它,你能嗎? – rplnt

+1

你根本無法改變它,正確。事實上,你可以做的事情看起來像改變它可能會混淆OP,這是真的,但這與你是否複製一個對象,當你在一個'dict'中存儲它兩次是不同的問題。 – agf