2011-07-19 53 views

回答

6

不,一旦調用update(),它們就無法與其他鍵區分開來。

在函數內部,你仍然可以看看kw.keys(),看看哪些在

def func(**kw): 
    d = {'key0' : 0, 'key1' : 1} 
    d.update(**kw) 
    print "updated %s"%kw.keys() 

func(kw0=0, kw1=1) 
+0

哇,這是方式更明顯,比我還以爲。謝謝! – rectangletangle

+0

但是,如果你運行'func(key0 = 0)',那麼儘管事實上這個字典'd'沒有被改變,但是'key0'被打印出來了。 –

2

檢測已更改密鑰的唯一途徑獲得通過,是存儲原件及複印件字典,然後比較更新版本和原始版本。

def func(**kw): 
    d = {'key0' : 0, 'key1' : 1} 
    old = dict(d) 
    d.update(kw) 
    changed_keys = [key for key in d if old.get(key) != d.get(key)] 
    print changed_keys 
+0

'set(d.items())。difference(old.items())'也可以使用 –

+1

要絕對正確,您可以使用'is not'而不是'!='。那將是那些被改變的。但是,這可能或不可能是所期望的 - 對象平等可能是唯一期望的度量。 –