Python辞書でいくつかの異常な動作が見られます:
import numpy as np
td =[np.Inf, 2, 3]
a = {}
# First initialize contents of dictionary to a list of values
for k in range(10):
a[k] = td
# now I want to access the contents to modify them based on certain criteria
for k in range(10):
c = a[k]
c[0] = k
a[k] = c
c[0] = k
これから、各ディクショナリキー値のリストの最初の各項目が( )に基づいて変更されることを期待しますが、最後に取得するのは、次のように、ディクショナリのすべての値が最後の値に更新されることですk
。
{0: [9, 2, 3], 1: [9, 2, 3], 2: [9, 2, 3], 3: [9, 2, 3],
4: [9, 2, 3], 5: [9, 2, 3], 6: [9, 2, 3], 7: [9, 2, 3],
8: [9, 2, 3], 9: [9, 2, 3]}
何かが足りないのですか、それとも辞書の定義に何か問題がありますか?
コードを実行するために別の方法でこれを回避することはできますが、辞書クラスがこのように動作する理由に興味があります。