存储表格数据在内存中的数据结构?
我的剧本如下所示:我有一个数据表 /几个字段,小于一百条线/, 我在我的程序中广泛使用。 我还需要这些数据常量,所以我保护它们 CSV 并在开始时下载。 我不愿不要使用数据库,因为每个参数 /甚至 SQLite/ 对我的谦虚要求是多余的 /此外,我希望能够以简单的方式脱机编辑值,并且没有比记事本更容易。/.
假设我的数据看起来像这样 /在文件中,他们用逗号除以标题,这只是一个插图/:
记录:
字符串可以是值。 "real", 录制到文件,或简单地自动生成表示行号的值。 在任何情况下,它都存在于内存中。
名字是唯一的。
我对数据做了什么:
基于两个搜索行 ID /迭代/, 任何一个名字 /直接访问/.
基于多个字段在不同的订单中显示表:我需要对其进行排序,例如优先级,然后按年或逐年,然后在优先级等。
例如,我需要基于参数集计算实例,例如,两行之间有多少行 1997 和 2002 年份或数量是多少 1998 年份和优先权 > 2 等等。
我知道 "cries" 为了 SQL...
我正试图了解数据结构的最佳选择。 以下是我看到的一些选择:
线条列表:
列列表列表 /显然,它会 API 为了 add_row 等等/:
列列表的词汇 /可以创建常量来替换字符串键/:
词典用封面的键 /行,领域/:
而且我相信还有其他方式......但是,在我的索赔时,各方面都有其缺点 /复杂订单和计数/.
什么是推荐的方法?
EDIT:
为了澄清,表现对我来说不是一个主要问题。 由于表桌子如此之小,我相信几乎每个操作都将在毫秒乐队中,这不是我的应用程序的问题。
假设我的数据看起来像这样 /在文件中,他们用逗号除以标题,这只是一个插图/:
Row | Name | Year | Priority
------------------------------------
1 | Cat | 1998 | 1
2 | Fish | 1998 | 2
3 | Dog | 1999 | 1
4 | Aardvark | 2000 | 1
5 | Wallaby | 2000 | 1
6 | Zebra | 2001 | 3
记录:
字符串可以是值。 "real", 录制到文件,或简单地自动生成表示行号的值。 在任何情况下,它都存在于内存中。
名字是唯一的。
我对数据做了什么:
基于两个搜索行 ID /迭代/, 任何一个名字 /直接访问/.
基于多个字段在不同的订单中显示表:我需要对其进行排序,例如优先级,然后按年或逐年,然后在优先级等。
例如,我需要基于参数集计算实例,例如,两行之间有多少行 1997 和 2002 年份或数量是多少 1998 年份和优先权 > 2 等等。
我知道 "cries" 为了 SQL...
我正试图了解数据结构的最佳选择。 以下是我看到的一些选择:
线条列表:
a = []
a.append/ [1, "Cat", 1998, 1] /
a.append/ [2, "Fish", 1998, 2] /
a.append/ [3, "Dog", 1999, 1] /
...
列列表列表 /显然,它会 API 为了 add_row 等等/:
a = []
a.append/ [1, 2, 3, 4, 5, 6] /
a.append/ ["Cat", "Fish", "Dog", "Aardvark", "Wallaby", "Zebra"] /
a.append/ [1998, 1998, 1999, 2000, 2000, 2001] /
a.append/ [1, 2, 1, 1, 1, 3] /
列列表的词汇 /可以创建常量来替换字符串键/:
a = {}
a['ID'] = [1, 2, 3, 4, 5, 6]
a['Name'] = ["Cat", "Fish", "Dog", "Aardvark", "Wallaby", "Zebra"]
a['Year'] = [1998, 1998, 1999, 2000, 2000, 2001]
a['Priority'] = [1, 2, 1, 1, 1, 3]
词典用封面的键 /行,领域/:
Create constants to avoid string searching
NAME=1
YEAR=2
PRIORITY=3
a={}
a[/1, NAME/] = "Cat"
a[/1, YEAR/] = 1998
a[/1, PRIORITY/] = 1
a[/2, NAME/] = "Fish"
a[/2, YEAR/] = 1998
a[/2, PRIORITY/] = 2
...
而且我相信还有其他方式......但是,在我的索赔时,各方面都有其缺点 /复杂订单和计数/.
什么是推荐的方法?
EDIT:
为了澄清,表现对我来说不是一个主要问题。 由于表桌子如此之小,我相信几乎每个操作都将在毫秒乐队中,这不是我的应用程序的问题。
没有找到相关结果
已邀请:
6 个回复
江南孤鹜
赞同来自:
那么你就可以 create/drop/query/update 内存中的表格包含所有功能 SQLite 完成后,没有任何文件。 as Python 2.5
位于标准库中,事实上它不是 "overkill" IMO.
以下是如何在数据库中创建和填写的示例:
如果你真的不喜欢使用 SQL, 您可能会使用词典列表:
然后给出:
就个人而言,我喜欢更多的版本 SQLite, 因为它更好地保留您的类型 /没有额外的转换代码 Python/ 它很容易满足未来的要求。 但再次,我完全满意 SQL, 以便 YMMV.
冰洋
赞同来自:
A pandas DataFrame 似乎在这里是理想的选择。
http://pandas.pydata.org/panda ... .html
来自广告
二维尺寸变化,潜在的异质表格
标有轴的数据结构 /行和列/. 算术运算
行和列的对齐。 可以被认为是一个dicti
串联对象的容器。 主要数据结构 pandas
http://pandas.pydata.org/
/
郭文康
赞同来自:
实际上,这里唯一的缺点是您需要在数据的情况下了解的是数据,如果更改此订单,则必须更改搜索过程/排序使他们匹配。
还有一件事你可以做到 - 这是一个词典列表。
这将避免需要了解参数的顺序,因此您可以查看每个字段。 "year" 在列表中。
小明明
赞同来自:
最终,您将获得特殊,非正式的预定,完全错误,实现了一半的缓慢 SQLite, 派对
n's_Tenth_Rule[/url]
格林斯帕那 .
尽管如此,您是绝对正确的,说一个数据结构的选择将影响搜索,排序或计数,因此,如果性能至关重要,并且您的数据是常量的,则可以考虑使用多种结构进行不同目的。
首先,衡量哪些操作将更常见,并确定哪个结构最终将不到较少。
郭文康
赞同来自:
在表中,请勿直接添加字符串,但是有一种方法可以更新多个搜索卡,例如名称
, 如果您没有按顺序添加行或 id 不一致,你也可以 idMap,
例如
诸葛浮云
赞同来自:
由于其最根本的存在原因是作为一种转移数据的方式 XML 文件I. SQL 数据库。
它是用西班牙语写的 /如果它对编程语言很重要/, 但非常简单。
它定义了一个名为的对象 Tabla /桌子/, 它可以使用名称创建,以标识连接兼容数据库接口的预先创建的对象 pep-246.
然后,您需要使用该方法添加列
/add_column/, 可以采取不同的关键字参数:
/场地/: 字段名称
/一种/: 存储的数据类型可能是类似的 'varchar' 和 'double' 或对象的名称 python, 如果您对导出后一个数据库不感兴趣。
/default/: 如果添加字符串时,请设置列的默认值。
还有其他人 3 但它们仅适用于数据库,实际上并不存在
喜欢:
然后您使用操作员添加字符串 + = /或者 +, 如果要使用额外的字符串创建副本/
然后你可以生成 XML 并用文件写入文件
/export_XML/ 和
/write_XML/:
然后使用它会使用它
/import_XML/ 使用文件名并指示您使用该文件,而不是字符串文字:
先进的
这些是您可以使用该对象的方式。 Tabla 以态度 SQL.
此示例假定列名称 'id'
但是你可以替换宽度 row.pos 为你的例子。
可以从网站下载文件:
https://bitbucket.org/WolfangT/librerias
</table></table>