Skip to main content
 首页 » 编程设计

python之将列表添加到字典时输出错误

2025年05月04日37飞鱼

我正在尝试添加列表 l 作为不同字典 d 键的值。对于数组 a,具有 [6,12,18,24,30] 我试图让字典 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 

请您参考如下方法:

你总是追加到同一个列表。因此所有字典值最终都指向同一个列表。您想每次附加到不同的列表:

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