辞書を使ってPython 2.7の異なる行列に異なるキーを割り当てようとしています。Python辞書キーを別の行列に割り当てる
EDIT - INFOの不足のため申し訳ありませんが、以前に
ここに私のコードの完全な、実施例である:
import random
matrices_dict = {}
matrix = [[1,1],
[1,1],]
def checker(key_number):
for x in range(0, 2):
for y in range(0, 2):
matrix[x][y] = random.randint(0, 9)
matrices_dict[key_number] = matrix
print matrices_dict
checker(0)
checker(1)
...その後、私は結果の辞書がないことを確認します生成された2つの異なる行列を格納しないでください。代わりに、第2のマトリクスに対応する両方の辞書キー1,2が作成されている。
つまり、最初のキーのペアリングが上書きされています。それは私には奇妙なことです。なぜなら、新しい行列を新しいキーに書き込むように明確に要求しているからです。
最初のキー/マトリックスのペアを上書きしないようにする方法についてのアドバイスはありますか?
HEREは
import random
matrices_dict = {}
def checker(key_number):
matrix = [[1,1],
[1,1],]
for x in range(0, 2):
for y in range(0, 2):
matrix[x][y] = random.randint(0, 9)
matrices_dict[key_number] = matrix
print matrices_dict
checker(0)
checker(1)
ITを解決しようWHAT'S秒1が動作し、最初のものはない理由...私は明確ではないです。最初の1つでは、定義が呼び出されるたびに新しい行列が必要なのはなぜですか...なぜ以前に作成されたランダムな1つの作業を上書きしないのですか?
とにかかわらず、なぜべき辞書は、その前のキーのペアを上書きするかどうか、マトリックスの作成への影響のそれらの詳細のいずれか?
好奇心から知りたいですか?
* same *オブジェクトへのこれらの参照はありますか?マトリックスはどのように生成されますか?新しいものを作るのではなく、単に行列を変更するだけです。 –
いいえ、私はそれをチェック..それはうまく動作します。私は 'matrix = [1,2,3]'をサンプルとして与えました。生成された行列に何か問題がありますか?または何か他の問題? – void
明らかに、関数内でグローバル値を使用していて、 'checker(X)'を呼び出すときに何が起きているのかを確認するためにそれらを出力します。 – PRMoureu