2016-07-26 66 views
-1

假設我有一本詞典dic = {k: v}。我的目標是創建另一個數據結構,指向一個字典的一個子集,在一個密鑰下訪問。指向Python中另一個詞典的詞典

例如:dic = {1: 'a', 2: 'b', 3: 'c', 4: 'f'}。 我想只有鑰匙13,例如下一個鍵'k1'下一個鍵'k2'一個指針,但檢索,並鍵24檢索,而不需要做一個硬拷貝。我的數據在整個應用程序中不會改變。

我知道我可以創建另一個字典subdic = {'k1': (a, c), 'k2': (b, f)},但那需要額外的內存,對吧? 我怎樣才能做到這一點只有某種指針?使用軟拷貝,使得原始字典dic中的值僅在內存中存在一次。

+3

你可以給出一個非散文(即代碼)的例子,你將如何訪問這個和輸出應該是什麼?也許你是如何創造它的。我沒有按照你的標記。 –

+0

我認爲這很清楚。你沒有得到什麼?字典創建? – curious

+2

嗯......你在Python的問題中詢問如何製作一個指針,它是C(和相關的)而不是Python,以及關於需要額外內存的另一個字典的東西......好吧,指針也需要額外的內存...你想要什麼樣的(Python)對象,你期望它如何表現?你的問題的愚蠢答案是,如果你想使用指針的某種多字典,你必須編寫自己的C擴展。 –

回答

2

您可以創建第二個字典這樣

dic2 = {'k1': (dic[1], dic[3])} 

這樣做,你不實際使用額外的內存(只能勉強),因爲在元組對象是一樣的人在原始dic (它們在內存中佔據相同的空間)。你可以通過這樣做檢查它是否爲真:

id(dic2['k1'][0]) == id(dic[1]) # True