我使用索引实例(比如音乐曲目)进行操作,并且必须通过索引(int-> string)查找对象的名称。 Dicts太慢了(我有大约10M的物体)。内存不是问题,所以最方便的解决方案是从带有名称的csv文件创建一个随机访问的字符串数组。
但是,我没能在python中做到这一点 - 我得到一个错误,即0-dim数组(字符串)无法编入索引。什么是为字符串创建随机访问容器的本机python方法?
答案 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