我看到在Python解釋一些不尋常的行爲的所有值:改變基於(C改變一個字典值改變
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
從這個我期望列表中爲每個字典鍵值的每個第一項[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]}
我缺少的東西,或有什麼不對在字典中的定義? 我可以以不同的方式解決這個問題,以便讓我的代碼運行,但是我對字典類爲什麼會這樣運行感興趣。
謝謝你,我的印象是,(TD)的價值將被重新初始化每一次,即舊值被毀,每一個新的任務,不過,我現在的認識字典的行爲有所不同。 :) – Nader
@Nader它不是字典....如果你做了'mylist = [];對於我在範圍內(10):mylist.append(el)'你會有同樣的東西:) –
我明白,但是,如果我改變循環內部(el)的值,我會期待如果附加值會相應地改變(例如,mylist = [];對於範圍(10)中的i:el = i; mylist.append(el)),在這種情況下它是這樣做的,但不適用於字典。 – Nader