什么是存储格式(非可变)数据的最佳方式:
doodahs = {
0-256: "FOO",
257: "BAR",
258: "FISH",
279: "MOOSE",
280-65534: "Darth Vader",
65535: "Death to all newbies" }
我有相对较多的这类数据集,所以我可以定义字典(或接近字典)的方式并通过索引访问。
哦,这是在 Python 2.4 上,所以如果你想让我使用更新的版本,请给出非常好的升级理由(我会选择 3 :)
请您参考如下方法:
我会将范围拆分为一个元组,然后在您的类(class)中,将项目保存在有序列表中。您可以使用 bisect插入 O(n) 和查找 O(logn) 的模块。
如果你正在将一个字典转换为你的新类,你可以构建一个无序列表并在最后对其进行排序
doodahs = [
(0, 256, "FOO"),
(257, 257, "BAR"),
(258, 258, "FISH"),
(279, 279, "MOOSE"),
(280, 65534, "Darth Vader"),
(65535, 65535, "Death to all newbies")]
您的 __getitem__ 可能会像这样工作:
def __getitem__(self, key):
return self.doodahs[bisect.bisect(self.doodahs, (key,))]
__setitem__ 可能是这样的:
def __setitem__(self,range,value):
bisect.insort(self.doodahs, range+(value,))
