向dict添加列表时输出错误

时间:2015-07-21 16:44:46

标签: python numpy

我正在尝试将列表l添加为不同dict d键的值。对于数组a[6,12,18,24,30]我试图让dict d包含以下键值对:

d[6] = [0, 0, 0.....0]
d[12] = [6, 0, 0, ..0]
d[18] = [6, 12, 0, ...0]
d[24] = [6, 12, 18, 0, ..0]

上面每个列表中有59个元素。

我使用下面的代码执行此操作,但键24的输出是:

{24: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 12, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 18, 12, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}

我想知道我哪里出错了。

d = {}
l = []
a =numpy.array([6,12,18,24,30])
for x, value in numpy.ndenumerate(a): 
    months_to_maturity = value
    for i in range(6, 354, 6):
        if i <= months_to_maturity:
            l.append(months_to_maturity - i)
        else:
            l.append(0)

    d[months_to_maturity] = l

1 个答案:

答案 0 :(得分:5)

您总是会附加到同一个列表中。因此,所有字典值最终都指向同一列表。您希望每次都附加到不同的列表:

d = {}
a = numpy.array([6, 12, 18, 24, 30])
for months_to_maturity in a:
    l = []
    for i in range(6, 354, 6):
        if i <= months_to_maturity:
            l.append(months_to_maturity - i)
        else:
            l.append(0)

    d[months_to_maturity] = l