2017-04-16 10 views
-4

私の問題は辞書を使用していますが、変更する前にそのコピーを取得したいと考えています。このように私は両方の辞書を比較することができます。コードを変更せずに辞書を変更する

私はこのようにそれを行う:

old_dic = dict(data) 

が、私は関数でデータを変更し、それがこの

data = play_turn(data) 

のように行われるが、その後、私はまたold_dicを印刷したいけど、それだ後かわった。もちろん、私は関数play_turnでそれを変更せず、データを変更してから両方を印刷しようとしましたが、データのみが変更されました。 play_turnはデータを多く変更します。 play_turn関数は、船(ゲームであるため、辞書内のキー)を方向を変えたり速度を変えたりしますが、すべての情報はデータ辞書に保存されています。 辞書には、いくつかのキーまたはいくつかのリストの辞書もあります。

play_turn機能の間にold_dicを変更しないでください。あなたは、あなたがクローンを作成するとき.copyまたは.deepcopyを使用

目的に の参照をコピーしたいとき=を使用する必要がある。この

import copy 
old_dic_copy = copy.deepcopy(data) 

ようクローン辞書に必要

+2

[mcve]を与えてください - 'play_turn'とは何ですか? – jonrsharpe

+0

多くのデータを変更します。 play_turn関数は、船(ゲームであるため、辞書内のキー)を方向を変えたり速度を変えますが、すべての情報はデータ辞書に保存されます。 – Vipongo

+1

MCVEを提供するには質問しません。私は上記に尋ねた。 – jonrsharpe

答えて

1

オブジェクト

あなたは新しいものを変更した後に彼を印刷することができます:)

+0

私は試しましたが、単語はありませんでした – Vipongo

+1

ディクショナリ内に複数のレベルの辞書や他のリストがある場合は 'deepcopy'が必要ですので、 – MatsLindh

+0

答えをもう一度見てみてください。 –

関連する問題