更新メソッドを使用して変更されたキーを取得することは可能ですか?上記のコードで辞書の更新方法を使用して更新されたキーの取得
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)'を実行すると、 'd0'は変更されていませんが、 'key0'が表示されます。 –