2011-07-19 10 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)'を実行すると、 'd0'は変更されていませんが、 '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'を使います。それは変更されたものです。しかし、それは望ましいものである可能性があります。オブジェクトの平等が唯一の望ましいメトリックである可能性があります。 –

関連する問題