跪求指点
2021-07-27 13:42
采纳率: 100%
浏览 29
已结题

python,列表,字典,初始化或赋值问题,用循环给列表中的字典赋值,之后一个字典里的内容改变,其他都改变

我用循环进行列表初始化:

for i in range(1,8):    #周一到周日
    for jie in range(1,13): #第一小节到第十二小节
        dict[jie] = 0  
    # 把字典添加到列表中
    list.append(dict)

之后进行赋值时,所有的字典都变化:
比如 list[0][1]=5,我只赋值【0】【1】,但实际是【0】【1】、. 、【7】【1】都被改变了。

我想大概是地址的问题,但是我不知道怎么解决,我的问题就是要怎么初始化?

描述如果不清楚,请看图示:
初始化得:
[{1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0, 10: 0, 11: 0, 12: 0},
{1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0, 10: 0, 11: 0, 12: 0},
.
{1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0, 10: 0, 11: 0, 12: 0}]
赋值 list[0][1]=5 后,得:
[{1: 5, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0, 10: 0, 11: 0, 12: 0},
{1: 5, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0, 10: 0, 11: 0, 12: 0},
.
{1: 5, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0, 10: 0, 11: 0, 12: 0}]

  • 点赞
  • 收藏

1条回答 默认 最新

  • Feng-licong 2021-07-27 13:46
    已采纳

    因为你list里面其实都是同一个对象

    点赞 评论

相关推荐 更多相似问题