0
ジェネレータを使用しているときに、渡されたディクショナリを変更しても、ジェネレータは古いデータ構造で結果を返します。 どうすれば修正できますか?発電機を使用しているときに辞書を最新の状態に保つにはどうすればいいですか?
def min_key_order(adict:dict):
for key, value in sorted(adict.items()):
yield (key, value)
d = {1:'a', 2:'x', 4:'m', 8:'d', 16:'f'}
i = min_key_order(d)
print(next(i))
d.pop(2)
print(next(i))
そして、それは私に(1,'a')
を与え、(2,'x')
、でも私は、辞書からポップ・キー2を持っています。
変更した辞書を反復処理することはできません。それはサポートされていない動作です。 –
しかし、 'sorted()'関数は**新しいリストを生成します**;そのリストは元のdicitonaryの変更に従うように更新されることはありません。 –
これらのどちらもジェネレータと関係がありません。 'd.pop()'を 'for'ループの中に' sorted(d) 'を置いて同じ動作をします。 –