使用更新方法時,是否可以獲取發生更改的密鑰?獲取使用字典更新方法更新的密鑰
def func(**kw):
d = {'key0' : 0, 'key1' : 1}
d.update(**kw)
func(kw0=0, kw1=1)
在上面的代碼我想拿到鑰匙'KW0'和'KW1'。
使用更新方法時,是否可以獲取發生更改的密鑰?獲取使用字典更新方法更新的密鑰
def func(**kw):
d = {'key0' : 0, 'key1' : 1}
d.update(**kw)
func(kw0=0, kw1=1)
在上面的代碼我想拿到鑰匙'KW0'和'KW1'。
不,一旦調用update()
,它們就無法與其他鍵區分開來。
在函數內部,你仍然可以看看kw.keys()
,看看哪些在
如
def func(**kw):
d = {'key0' : 0, 'key1' : 1}
d.update(**kw)
print "updated %s"%kw.keys()
func(kw0=0, kw1=1)
檢測已更改密鑰的唯一途徑獲得通過,是存儲原件及複印件字典,然後比較更新版本和原始版本。
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
'set(d.items())。difference(old.items())'也可以使用 –
要絕對正確,您可以使用'is not'而不是'!='。那將是那些被改變的。但是,這可能或不可能是所期望的 - 對象平等可能是唯一期望的度量。 –
哇,這是方式更明顯,比我還以爲。謝謝! – rectangletangle
但是,如果你運行'func(key0 = 0)',那麼儘管事實上這個字典'd'沒有被改變,但是'key0'被打印出來了。 –