我有一個與字符串關聯的數組(相同長度)的字典。我的目標是用相同的鍵創建一個新的字典,但切割數組,只保留我需要的元素。我寫了一個函數來做到這一點,但問題是它返回的字典與每個鍵相關的數組(正確的切割長度)相同,而我控制的打印命令顯示正確的關聯。這裏的功能:python:dictionary和numpy.array問題
def extract_years(dic,initial_year,final_year):
dic_extr = {}
l = numpy.size(dic[dic.keys()[0]])
if final_year != 2013 :
a = numpy.zeros((final_year - initial_year)*251)
elif final_year == 2013 :
a = numpy.zeros(l - (initial_year-1998)*251)
for i in range(0,len(dic)):
#print i
for k in range (0,numpy.size(a)):
a[k] = dic[dic.keys()[i]][(initial_year-1998)*251 + k]
#print k
dic_extr[dic.keys()[i]] = a
print dic.keys()[i]
print dic_extr[dic.keys()[i]]
print dic_extr.keys()
print dic_extr
return dic_extr
正如我所說,print dic_extr[dic.keys()[i]]
顯示正確的結果,而最終print dic_extr
表示關於每一個鍵同一個數組的字典。
請修復縮進。 – zipa
您能給出一個函數調用的例子,它有一個意想不到的結果,並且結果是您期望的嗎? – GLR
https://pastebin.com/GSncW5DE 我粘貼終端輸出在這裏,因爲字典有超過300個元素和陣列很長。正如你可以看到第一個打印是'print dic.keys()[i] print dic_extr [dic.keys()[i]]' 而最後一個是print dic_extr'這是完全不同的,我只是預計整個首先打印在一起的新詞典 – tidus