基本上,我需要创建一个包含非连续整数ID的查找表.我想知道,就查找速度而言,dict无论如何我通常更好地使用带有整数键,或者使用很长的list带有很多空索引.在我看来,list可能仍然会更快,因为Python应该确切地知道在哪里看,但我想知道是否有任何后端进程dict要补偿以及这些空list插槽的额外内存要求是否会否定(可能) )更容易穿越list速度增益.有没有替代lists和dicts可能更适合这个?
我已经看到了这个问题,但它并没有完全回答我的:字典访问速度与字符串键的整数键比较
ETA:我在我的程序中实现了两次这样的查找表.一个实例看到最大id为5,000,其中填充了70-100个对象; 另一个的最大ID为750,其中20-30填充.
我正在尝试维护一个地址历史表:
CREATE TABLE address_history (
person_id int,
sequence int,
timestamp datetime default current_timestamp,
address text,
original_address text,
previous_address text,
PRIMARY KEY(person_id, sequence),
FOREIGN KEY(person_id) REFERENCES people.id
);
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种简单的方法可以自动编号/约束sequence,address_history从而自动从1开始计数person_id.
换句话说,第一行person_id = 1会得到sequence = 1; person_id = 1会得到第二排sequence = 2.第一行person_id = 2,将sequence = 1再次获得.等等.
还有更好/内置的方式来维护这样的历史吗?