Python 模拟关系数据库的数据结构
Python data structure to mimic relational databases
我想在 python 中存储一些数据的大量实例。每条记录都有以下字段:
用户名、地址、工资等...
用户名应该是唯一的。我做了很多搜索。
目前我正在使用一个字典列表,但是当我插入一个新项目时,我会迭代列表并检查每个字典的用户名,这是 O(n)。搜索也是 O(n)。我怎样才能实现用户名有索引,并使搜索时间为 O(logn)?
为什么不使用字典呢?
顶级词典可以通过用户名寻址,其他词典可以与您现在拥有的相同。
也可以扫描字典 through (d.values()) -- 唯一的缺点是,你不能依赖顺序。
当然这不是数据库行为,但在大多数情况下足够好并且非常快——通过 dict 的访问是 O(1)。
当然你可以使用 sqlite——但是当你只想通过用户名访问并扫描条目时,你会快得多(无论是在开发速度还是运行时速度)。
您实际上也可以使用关系数据库。 sqlite 模块允许内存中的数据库:
import sqlite3
conn = sqlite3.connect(':memory:')
# ...
conn.close()
我想在 python 中存储一些数据的大量实例。每条记录都有以下字段: 用户名、地址、工资等...
用户名应该是唯一的。我做了很多搜索。
目前我正在使用一个字典列表,但是当我插入一个新项目时,我会迭代列表并检查每个字典的用户名,这是 O(n)。搜索也是 O(n)。我怎样才能实现用户名有索引,并使搜索时间为 O(logn)?
为什么不使用字典呢?
顶级词典可以通过用户名寻址,其他词典可以与您现在拥有的相同。
也可以扫描字典 through (d.values()) -- 唯一的缺点是,你不能依赖顺序。
当然这不是数据库行为,但在大多数情况下足够好并且非常快——通过 dict 的访问是 O(1)。
当然你可以使用 sqlite——但是当你只想通过用户名访问并扫描条目时,你会快得多(无论是在开发速度还是运行时速度)。
您实际上也可以使用关系数据库。 sqlite 模块允许内存中的数据库:
import sqlite3
conn = sqlite3.connect(':memory:')
# ...
conn.close()