字典值更改而不执行任何更新[重复]

2024-02-10

为什么每个键的值都会更新?

d = {0: [0], 1: [0, 1]}
for i in range(2, 4):
    d[i] = d[i - 1]
    d[i].append(i)
print(d)

Output:

{0: [0], 1: [0, 1, 2, 3], 2: [0, 1, 2, 3], 3: [0, 1, 2, 3]}

我希望在输出中像这样:

{0: [0], 1: [0, 1], 2: [0, 1, 2], 3: [0, 1, 2, 3]}

有人可以帮助我理解为什么会发生这种情况以及可能的解决方案吗? 如果能附上相关的Python文档就太好了!


分配列表将通过引用复制元素。使用复制列表的值.copy() method.

From Python 文档 https://docs.python.org/3/library/copy.html:

Python 中的赋值语句不会复制对象,而是创建对象 目标和对象之间的绑定。对于以下集合 可变或包含可变项目,有时需要一份副本,因此 可以更改一个副本而不更改另一个副本。

d = {0: [0], 1: [0, 1]}
for i in range(2, 4):
    d[i] = d[i - 1].copy()
    d[i].append(i)
print(d)

Output:

{0: [0], 1: [0, 1], 2: [0, 1, 2], 3: [0, 1, 2, 3]}

解释:

当我们使用d[i] = d[i-1] in d[i]存储列表的引用存储在d[i-1]。那么当我们更新的时候d[i]d[i].append(i)它更新了列表d[i-1]索引也。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

字典值更改而不执行任何更新[重复] 的相关文章

随机推荐

  • 将组合框添加到 ListViewItem

    我正在使用 C 创建一个 Windows 窗体应用程序 该表单包含一个ListView 这是红十字会调度员的应用程序 ListView 有所有单位的列表 每个单位都有一个状态 此状态需要更改 因此 我想向每个 ListViewItem 添加
  • 使用 OpenCV.js 检测角落里有正方形的框架

    我一直在尝试使用 Javascript 和 OpenCV js 创建一个填写的表单扫描仪 我基本上想做的是拍摄一张写有填写好的表格的纸的照片 然后能够扫描照片并分析表格中的答案 第一步是实际找到图片中的形式并应用透视变换以获得论文的 自上而
  • '' 附近的语法不正确

    我正在尝试在 SQL Server Management Studio 中运行以下相当简单的查询 SELECT TOP 1000 FROM master sys procedures as procs left join master sy
  • 导轨。保存时更新模型属性

    认为这是一项简单的任务 但我对这个问题有点坚持 希望在保存模型时更新模型的属性之一 从而在模型中进行回调 after save calculate and save budget contingency def calculate and
  • RJS:检查现有页面元素?

    我有一个 ID 为 foo 的文本字段 有时存在 有时不存在 如果存在 我想填写一个特定的值 你如何通过使用来做到这一点RJS in 轨道2 2 我尝试了这个 但它不起作用 if page foo page foo value bar en
  • 在 Moment.js 中获取日期、小时和分钟

    这是我第一次使用 Moment js 遇到了以下问题 所以我有以下日期 now 2017 01 26T14 21 22 0000 expiration 2017 01 29T17 24 22 0000 我想要得到的是 Day 3 Hours
  • ansible:从逗号分隔的字符串创建列表

    我想从逗号分隔的字符串创建一个列表以传递到ansible中的循环 有时变量也只能有一个值 var1 test1 test2 也可以是 var1 test1 这是我的代码 name Separate facts set fact groups
  • ViewDidLoad 期间调用 Xamarin 异步 ViewDidAppear

    我正在尝试在 ViewDidLoad 上初始化视图模型 我需要在 ViewModel 初始化代码中调用一些异步方法 因此我将异步代码从构造函数移到了异步工厂方法 http blog stephencleary com 2013 01 asy
  • 如何在 DynamoDB 中创建数据库

    我对 DynamoDB 非常陌生 在阅读文档时 我看到了以下句子 http docs aws amazon com amazondynamodb latest developerguide DataModel html 在 Amazon D
  • R/Shiny :框的颜色取决于选择

    我尝试创建闪亮的动态盒子 我们可以使用 status 警告 或 信息 等 更改框的状态 颜色 我想 动态 更改此框的颜色 具体取决于选择输入的选择 如下所示 https image noelshack com fichiers 2018 3
  • 如何转义 JavaScript 字符串中的 & 符号,以便页面严格验证?

    我正在尝试使用 JQuery 将 dataString 传递给 ajax 调用 在调用中 我构造了get参数 然后将它们发送到接收端的php页面 问题在于数据字符串中包含 符号 并且 HTML 严格验证器对其进行了阻塞 这是代码 docum
  • SQL 错误 ORA 01427

    我正在尝试通过使用此查询从数据存储中的另一个表收集值来更新表中的一列 UPDATE tablename PT SET DID select distinct did from datastore get dept alias where u
  • 未定义的引用错误 OpenCv Android with ndk 18 (c++_static)

    我更新了 Android Studio 以使用 ndk18 并更改了 APP STL c static 这会导致 OpenCv 中出现一堆链接器错误 thirdparty opencv android sdk sdk native jni
  • sbt 0.11.3:获取最新版本的 git 插件

    我有一个使用 sbt 0 11 3 构建的多项目结构 我想集中我的依赖版本 项目版本 工件 shell 提示符等 这对我的发布管理和版本控制计划非常有帮助 所以我创建了一个插件并将我的全局配置放在那里 我的项目从 github 读取它并将其
  • 我需要在我的 Android 应用程序中实现通知提醒

    我的要求 我希望我的应用程序在每周五上午 8 点显示提醒通知 我使用 AlarmManager BroadcastReceivers 来实现我的提醒通知 我遇到的问题是 当我使用当前系统时间设置通知时间并在其中添加 2 分钟时 当我以这种方
  • Dokku 编译错误 - django.core.exceptions.ImproperlyConfigured:加载 psycopg2 模块时出错:没有名为“psycopg2”的模块

    我一直在尝试将构建的 Django 实例设置为数据库服务器 我选择了 DigitalOcean 作为我的平台 并了解到 Dokku 是一个有用的 PaaS 系统 它将为我尝试部署的 API 提供更好的可扩展性 在过去的 3 4 天里 我一直
  • 如何有效调试方法链函数参数?

    看一下下面的代码结构 myFunction myArray filter keep true uniq id value myFunction 使用 lodash 进行某些数组转换的结果作为其参数 虽然我喜欢代码的风格 但我发现很难调试并最
  • 如何为SqlDataSource UpdateCommand设置参数

    对于网格视图 我第一次尝试在 SQLDataSource 中为 UpdateCommand 使用存储过程
  • 使用 ShareActionProvider 时如何关闭共享历史记录?

    Android 4 0 或早期版本 如果您使用 ActionBarSherlock 中提供的新 ShareActionProvider 具有一项功能 可以在操作栏中显示上次使用的项目 有办法把这个关掉吗 对我来说 避免历史图标的最佳解决方案
  • 字典值更改而不执行任何更新[重复]

    这个问题在这里已经有答案了 为什么每个键的值都会更新 d 0 0 1 0 1 for i in range 2 4 d i d i 1 d i append i print d Output 0 0 1 0 1 2 3 2 0 1 2 3