使用更新方法时,是否可以获取发生更改的密钥?获取使用字典更新方法更新的密钥
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'被打印出来了。 –