2012-02-29 94 views
1

我有一個帶整數鍵的字典,每個鍵的值是一個整數鍵和整數集作爲值的映射。複製一個嵌套的字典

例:

x = { 
    3 : {0:set([1,2,5]), 1:set([3]), 2:set([7,8])}, 
    4 : {0:set([1,2]), 1:set([4]), 2:set([7])}, 
    } 

我試圖寫執行以下操作的功能:

給定一個密鑰(K),其是存在於x每個值(比如2),它應該返回以相似的結構和以下屬性的新的dict:

  • 密鑰(T):k
  • 下的所有值的並集的元素
  • 值:用相同的內鍵的字典,但對於給定的內部密鑰(k')的值是具有T in x[k]

在上面的例子與k'在舊字典相關聯的所有集合的結合,如果參數被k=2那麼它應該返回:

y = { 
    7 : {0:set([1,2,5]), 1:set([3,4]), 2:set([7])}, 
    8 : {0:set([1,2,5]), 1:set([3]), 2:set([8])}, 
    } 

我目前做這在舊字典k下遍歷所有可能的值,並構建新的。有沒有這樣做的有效方式?

+0

聞起來像功課嗎? – 2012-02-29 01:47:23

+0

@ ^不,它不是...我沒有提供實際代碼的原因是,當前代碼涉及我目前正在參與的項目的大量不必要的額外細節.. – Graddy 2012-02-29 01:56:56

+1

試圖清理您的示例(它們是不正確) - 他們現在是否正確? – 2012-02-29 03:48:11

回答

4

您必須創建對象的副本,您也可以使用deepcopycopy模塊。有關詳細信息,請檢查http://docs.python.org/library/copy.html#copy.deepcopy。這將複製所有對象和基本數據。

+1

如果你製作一個全新的字典對象,你不要複製舊的 - 你只是做一個新的。 – 2012-02-29 14:00:16