python中字符串的随机访问容器?

时间:2011-02-09 13:47:36

标签: python performance random-access

我使用索引实例(比如音乐曲目)进行操作,并且必须通过索引(int-> string)查找对象的名称。 Dicts太慢了(我有大约10M的物体)。内存不是问题,所以最方便的解决方案是从带有名称的csv文件创建一个随机访问的字符串数组。

但是,我没能在python中做到这一点 - 我得到一个错误,即0-dim数组(字符串)无法编入索引。什么是为字符串创建随机访问容器的本机python方法?

1 个答案:

答案 0 :(得分:2)

根据我的记忆,Python中的字典具有O(1)平均访问时间,但列表肯定会更快。如果您的指数不是很稀疏,您可以尝试这样的事情:

reader = [(1, 'a'), (2, 'b')] # Replace it with your CSV reader.

# First, fill a dictionary:
text_dict = {}
for index, text in reader:
    text_dict[index] = text

# Then create a sufficiently large list:
max_index = max(text_dict.iterkeys())
texts = [None] * (max_index + 1)

# And fill it:
for index, text in text_dict.iteritems():
    texts[index] = text

print texts
# prints: [None, 'a', 'b']
print texts[1]
# prints: a