1
私はitertools.tee
を使用して、辞書を生成するジェネレータのコピーを作成し、反復された辞書を、私が制御できない、辞書を修正する可能性のある関数に渡します。したがって、辞書のコピーを関数に渡したいと思いますが、すべてのティーは同じインスタンスへの参照のみを返します。itertools.tee()を反復要素のコピーを生成する方法は?
import itertools
original_list = [{'a':0,'b':1}, {'a':1,'b':2}]
tee1, tee2 = itertools.tee(original_list, 2)
for d1, d2 in zip(tee1, tee2):
d1['a'] += 1
print(d1)
d2['a'] -= 1
print(d2)
出力は次のとおりです:
この
は、次の簡単な例で説明される{'b': 1, 'a': 1}
{'b': 1, 'a': 0}
{'b': 2, 'a': 2}
{'b': 2, 'a': 1}
私が持っていると思いますが:もちろん
{'b': 1, 'a': 1}
{'b': 1, 'a': -1}
{'b': 2, 'a': 2}
{'b': 2, 'a': 0}
、この中にたとえば、これを簡単に回避するにはさまざまな方法がありますが、具体的な使用例のために、 itertools.tee
は、反復されたすべてのオブジェクトのコピーを、元のものを参照するのではなく、ティーのキューに格納します。
Pythonでこれを行う簡単な方法はありますか、または非ネイティブでitertools.tee
を再実装する必要がありますか?