- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在用 Python (2.6) 编写一个应用程序,需要我使用字典作为数据存储。
我很好奇拥有一个大字典是否更节省内存,或者将其分解为许多(很多)较小的字典,然后拥有一个包含对所有较小字典的引用的“索引”字典字典。
我知道列表和字典通常会产生很多开销。我在某处读到,python 在内部分配了足够的空间,字典/列表项的数量是 2 的幂。
我对 python 还很陌生,我不确定是否还有其他类似的意外内部复杂性/惊喜,这对普通用户来说并不明显,我应该考虑到这一点。
其中一个困难是知道 2 系统的力量如何计算“项目”?每个 key:pair 是否计为 1 个项目?知道这一点似乎很重要,因为如果您有一个 100 项的整体字典,那么将分配 100^2 项空间。如果您有 100 个单项字典(1 个键:对),那么每个字典只会分配 1^2(也就是没有额外分配)?
任何明确列出的信息都会非常有帮助!
最佳答案
三个建议:
使用一本字典。
它更容易,更直接,并且其他人已经为您优化了这个问题。在您实际测量代码并将性能问题追溯到这部分之前,您没有理由不做简单直接的事情。
稍后优化。
如果您真的担心性能问题,那么将问题抽象为一个类来包装您最终使用的任何查找机制并编写代码来使用该类。如果您发现需要其他数据结构以获得更高的性能,您可以稍后更改实现。
阅读哈希表。
字典是 hash tables ,如果你担心它们的时间或空间开销,你应该阅读它们是如何实现的。这是基本的计算机科学。简短的是哈希表是:
我不知道你在哪里读到它们是 O(n^2) 空间,但如果它们是,那么它们就不会像当今大多数语言那样被广泛、实际使用.哈希表的这些优良特性有两个优点:
这里还有一些可能会有所帮助的资源:
如果您发现确实需要优化字典实现,可以考虑以下几点:
关于python - 内存效率 : One large dictionary or a dictionary of smaller dictionaries?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/671403/
在 Zurb Foundation 4 中,有没有办法在浏览器变小或屏幕变小时自动切换到较小的按钮样式? 例如,当屏幕是标准桌面屏幕时,执行此操作: Button 1 当屏幕尺寸变小时,执行此操作:
我需要根据列值计算与特定行不同的行数,同时避免循环解决方案。 示例:以一个包含四行的data.table对象A为例,每行代表一个人。每个人都有 3 个值 v1, v2, v3。目标是计算,对于特定的个
在 OCaml 表单教程的解决方案中 here ,关于消除连续重复的列表元素,代码是这样写的: let rec compress = function | a :: (b :: _ as t)
我正在尝试使用 Rmarkdown 进行非常简单的演示,不涉及任何 block 。我想要相当多的文字,所以没有打印出来,因为它们是不受限制的。 难道没有一个选项可以让 beamer 设置文本的大小以使
我有一个由 Date 分隔的数据列表, Team和他们的Category Score . Category Score每个 Team 的更改每天并根据他们当天的实际得分,我需要确定 Category
我想使用 dplyr 删除较小的组。例如,数据框: ID group value 1 1 6 2 1 2 3 2 0 4 2 5 5 2
我想做一个小书签,从某个网站获取一些信息。 在使用 $('#div').text(); 并避开 div 内的 html 元素后,我得到以下字符串: TOP-GOST
例如:a不小于b 这个怎么写? 最佳答案 if ($a >= $b) if !($a < $b) 关于php - 在 PHP 中我该如何写 : IS NOT SMALLER THAN,我们在Stack
我需要将科学信息存储在数据库 (sql server) 中。在“小于”、“大于”是信息的一部分的数据库中存储值的最佳方式是什么。 例子: 患者编号:123变异率:<3% 患者编号:999突变率:3%
如果窗口大小低于 500 像素,我想加载一个不同的 css 文件。我有 但是 main.css 总是覆盖 mobile.css,尽管窗口小于 500px。怎么了? 编辑:我改成了 但是当我将窗
我希望从一个独特的提交中制作一个交互式补丁。我想使用类似于 的输出 git diff --word-diff=porcelain [file] 用于交互式修补。命令 git add --edit 只推
Using Playwright and Python, how can I expect for count bigger or smaller than?使用Playwright和Pytho
Using Playwright and Python, how can I expect for count bigger or smaller than?使用Playwright和Pytho
我想写一些类似的东西: {-# LANGUAGE FlexibleContexts,FlexibleInstances #-} import Data.ByteString.Char8 (ByteSt
R 的 duplicated 返回一个向量,显示向量或数据帧的每个元素是否是具有较小下标的元素的重复项。因此,如果 5 行数据帧的第 3、4 和 5 行相同,则 duplicated 将为我提供向量
我用 chart.js 创建了一个折线图。我使用以下方法将图例符号形式从矩形更改为圆形: legend: { display: true, labels: { usePointStyl
我在 Plotly(针对 R)中制作了一个气泡图,但我不断得到重叠的标记。有没有办法“缩小”所有标记,以便保留它们的相对大小但没有重叠?我想保持绘图的尺寸相同。这是一个测试用例: test ", "D
我们正在开发一款安卓应用。文本在 5"设备上正确显示。但在较小的设备(4"、3.5")上被裁剪。为什么会这样?欢迎任何帮助。请参阅下面的屏幕截图。显示的是“Credit”、“Debit”和“Net”,
我有一个大型主表 TableA,包含 1200 万条记录。其核心是: 表A:|--FieldA--|--FieldP--|--FieldS--|--FieldH--|--ValueField--|--
我得到了这段代码: $userquery = mysqli_query($con, "SELECT *, ( 3959 * acos( cos( radians
我是一名优秀的程序员,十分优秀!