For-loop使用字典键引用不起作用

时间:2015-10-27 20:55:17

标签: python numpy dictionary

我以前从未使用过Python,但决定通过操纵一些市场数据来开始学习它。我在使用字典结构时遇到了麻烦。在命令 dict_price_recalc [price_id] [year_to_index(year)]下面的 read_arr_price 的代码中,Q] = float(line2)/7.5 指定 float(line2)/ 7.5 到所有阵列,无论其 price_id 从属关系如何。我想知道是不是因为我没有正确初始化 dict_price

location ~ /dir/(.+)\.php$ {
     allow 1.2.3.4;
     allow 127.0.0.1;
     deny all;
     auth_basic off;
}

我的代码初始化 dict_price 如下:

def read_dict_price(dat_filename, dict_price):

## Load data set 
    dat_file = open(dat_filename,'r')
## Copy arr_price
    dict_price_recalc = dict_price

## Iterate through each row in the data set, assigning values to variables
    for line in dat_file:

        year = int(line[11:15])

        price_id = line[0:4]
        Q = 0
        Q1 = line[19:21]
        Q2 = line[23:25]
        Q3 = line[27:29]
        Q4 = line[31:33]

## Truncate year_list to prepare for another run of the nested loop
        year_list = []
        year_list[:] = []
## Repopulate
        year_list = [Q1, Q2, Q3, Q4]


#### This is where the mistake happens #### 
   ## Iterate through each row in year_list, populating dict_price_recalc with price data

        for line2 in year_list:
            dict_price_recalc[price_id][year_to_index(year), Q] = float(line2)/7.5

            Q += 1

return dict_price_recalc

我感谢您提供的任何指示。

1 个答案:

答案 0 :(得分:2)

此行price_id[key] = np_array为每个键设置相同的数组,因此每个键都指向同一个数组。你可能意味着price_id[key] = np_array.copy()