什么是存储格式(非可变)数据的最佳方式:
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,))
关于python - 存储映射到字符串的整数以便键可以是 python 中的范围的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1606150/