文字列に関連付けられた配列(同じ長さ)の辞書があります。私の目標は、同じキーで新しい辞書を作成することですが、必要な要素だけを残して配列を切断します。私はそれを行う関数を書いたが、問題は、すべてのキーに関連付けられた同じ配列(正しい長さの長さ)を持つ辞書を返すということです。ここでは機能があります:最終print dic_extr
は、すべてのキーに関連付けられている同じ配列を持つ辞書を示しているpython:辞書と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]]
は正しい結果を示しています。
インデントを修正してください。 – zipa
予期せぬ結果を持つ関数呼び出しの例と、期待していた結果を挙げることができますか? – GLR
https://pastebin.com/GSncW5DE ディクショナリの要素数が300を超え、アレイの長さが非常に長いため、ここに端末出力を貼り付けました。最初のプリントは、 'print dic.keys()[i] です。print dic_extr [dic.keys()[i]]' 最後は 'print dic_extr'ですが全く違っています。新しい辞書 – tidus