2015-03-25 27 views
0

很多時候,我發現自己使用copy.deepcopy()創建了一個dict的副本,然後del屬性,我不需要。重複字典的特定屬性的Python方法?

我沒有做到以下幾點:

  1. 參考現有dict;因爲我需要操作這些值,同時保留原始的dict
  2. 複製我真正需要的dict的特定屬性;因爲有時我必須操縱現有的屬性來創建新的屬性(對於新的dict),之後我不需要現有的屬性(在新的dict中)。

替代我能想到的:

  1. 慷慨地使用臨時變量而不是copy.deepcopy整個dict,並讓臨時變量與範圍自動失效。

那麼,我在做Pythonic的方式嗎?

+1

你是用現有的屬性創建新的,然後刪除它們是什麼意思?我不明白第2點。 – 2015-03-25 08:52:10

+0

我的意思是說,我需要在新的'dict'中不存在於舊的'dict'中的某些屬性,但可以通過修改舊的'dict'的一些現有屬性來生成。 – 2015-03-25 09:11:36

+0

那麼,爲什麼不先將這些屬性複製出舊字典,然後在新字典中修改這些屬性?正如你所說,你必須修改舊字典中的這些來創建新的字典。通過這種方式,您可以使用複製特定屬性的方法。 – 2015-03-25 09:24:09

回答

0

如果你想從字典a"foo""bar"鍵,與他們的價值觀deepcopy'ed,怎麼樣:

dict((x,copy.deepcopy(a[x])) for x in ('foo','bar')) 

如果您不需要值的副本:

dict((x,a[x]) for x in ('foo','bar')) 
+0

正如我在問題中所說的那樣,如果我必須操縱/修改某些現有屬性以創建新屬性,這將不起作用! – 2015-03-25 08:10:21