当前位置: 首页 > 面试题库 >

在Python中复制字典的快速方法

姚树
2023-03-14
问题内容

我有一个Python程序,可与字典配合使用。我必须复制字典数千次。我需要密钥和关联内容的副本。该副本将被编辑,并且不得链接到原始副本(例如,副本中的更改不得影响原始副本。)

键是字符串,值是整数(0/1)。

我目前使用一种简单的方法:

newDict = oldDict.copy()

对我的代码进行性能分析表明,复制操作花费了大部分时间。

有没有更快的替代dict.copy()方法?什么是最快的?


问题答案:

查看Python操作的C源代码dict,您会发现它们做的非常幼稚(但有效)。从本质上讲,它可以归结为PyDict_Merge

PyDict_Merge(PyObject *a, PyObject *b, int override)

这样可以快速检查是否是同一对象,以及其中是否包含对象。之后,它会对目标dict进行大量的一次大小调整/分配,然后将其一一复制。我看不到您的速度比内置速度快得多copy()



 类似资料:
  • 问题内容: 我想生成一个以字母作为键的字典,类似 生成该字典而不是我必须键入它的快速方法是什么? 谢谢你的帮助。 编辑 谢谢大家的解决方案:) nosklo的 解决方案可能是最短的 另外,感谢您提醒我有关Python字符串模块的信息。 问题答案: 我发现此解决方案更加优雅:

  • 问题内容: 我正在尝试复制在目标C中执行的for循环,但遇到“’AnyObject’没有名为’GeneratorType’的成员错误: 这是我的雨燕 我试过为字典定义一个holder变量。任何人都可以看到我在做什么错吗? 问题答案: 这不是字典的循环。它循环通过存储在其中一个字典键中的数组。例如,如果您有一个字符串数组作为字典的键之一,这就是想要做的事情。 如果您确实想只遍历字典,这在Swift中

  • 问题内容: 我知道在python中,任何东西,无论是数字,字符串,字典还是其他任何东西都是对象。变量名只是指向内存中的对象。现在根据这个问题, 这将创建一个空字典,并且所有变量都指向该dict对象。因此,更改任何一个都会反映在其他变量中。 会给 我已经了解了指向对象的变量的概念,因此这似乎很公平。 现在,尽管它很奇怪,但由于它是这样的基本声明,为什么会发生这种情况? 问题的第一部分: 为什么这里不

  • 问题内容: 这个问题已经在这里有了答案 : 如何在Python中复制文件? (17个答案) 5年前关闭。 使用Windows File Explorer或Mac’s Finder将文件复制到常规右键单击复制>右键单击粘贴的时间至少要长3倍。有没有比Python更快的替代方法?可以采取什么措施来加快文件复制过程?(文件目标位于网络驱动器上……如果有任何区别……)。 编辑后: 这是我最终得到的结果:

  • 问题内容: 字典键要求符合性: 如何获得纯Swift类实例的地址用作? 问题答案: 可以将相等实现为对象标识,即iff 并引用该类的相同实例,并且可以从构造哈希值(对于相同的对象,该值相同,请比较,例如,使用ObjectIdentifier()和’===’运算子 对于Swift 4.2及更高版本: 对于Swift 3: 对于Swift 2.3及更早版本,您可以使用 即 例: 实施协议。

  • 问题内容: 我想改善python pandas中的时间。我有以下代码: 目的是计算客户一个月内有多少份合同,并将此信息添加到新列()中。 :客户代码 :数据提取月份 : 合同编号 我想改善时间。下面,我仅处理部分真实数据: 如何改善执行时间? 问题答案: 用的方法: 最多的工作是将结果分配回源DataFrame的列中。