2015-05-19 53 views
1

我想獲得dict的deepcopy並更新Python 2.6中的結果。下面的代碼工作得很好:Python中的深度複製和字典更新

>>> a = {1:2} 
>>> b = copy.deepcopy(a) 
>>> b.update({3:4}) 
>>> b 
{1: 2, 3: 4} 

,而下面的代碼不起作用

>>> a={1:2} 
>>> b = copy.deepcopy(a).update({3:4}) 
>>> b 
>>> 

爲什麼第二代碼片段給None

回答

1

dict.updateinplace操作如list.sort,它不會返回一個值,它會修改它被調用的原始對象。

如果你實際上是print b,你會看到None,因爲所有沒有指定返回值的python函數默認都會返回None。因此,您要將b分配給調用update的結果,該結果實際上是None

0

您的更新方法實際上返回Noneupdate()方法輸出參數實際上是您提供的輸入字典,它在函數內部發生變化。