You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python用dict.fromkeys创建字典更新嵌套列表时所有值同步修改问题

问题原因

你遇到的所有列表同步更新的问题,根源是字典的初始化方式错误:
dict.fromkeys()方法如果传入第二个参数是可变对象(比如列表),会把同一个对象的引用赋值给字典的所有key。也就是说你所有用户对应的评分列表,本质上都指向内存里的同一个zeroRatings对象,修改任意一个用户的列表值,都会同步修改所有用户的列表。
你的ratingUpdate函数本身逻辑没有错误,不需要调整函数逻辑。

解决方案

修改字典的初始化逻辑即可,用字典推导式为每个用户生成独立的零值列表,两种常用写法:

  • 如果你的零值列表是固定长度的全0列表,可以直接写:
ratingsDict = {user: [0,0,0,0,0,0] for user in users}
  • 如果你要复用提前定义好的zeroRatings变量,可以用列表的copy方法生成新对象:
ratingsDict = {user: zeroRatings.copy() for user in users}

可选优化

你的更新函数不需要循环遍历所有key,可以直接判断key是否存在,运行效率更高:

def ratingUpdate(key, index, rate, ratings):
    if key in ratings:
        ratings[key][index] = rate

内容的提问来源于stack exchange,提问作者Vel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 10:54:05