2

インデックス付きのインスタンス(たとえば、音楽トラック)を操作し、オブジェクトの名前をそのインデックス(int-> string)で検索する必要があります。ディクトが遅すぎます(私は約1000万個のオブジェクトを持っています)。メモリは問題ではないので、最も便利な解決策は、名前付きのcsvファイルから文字列のランダムアクセス配列を作成することです。

ただし、Pythonでこれを作成できませんでした。0次元の配列(文字列)にインデックスを付けることができないというエラーが発生しました。文字列のランダムアクセスコンテナを作成するためのネイティブPythonの方法は何ですか?

4

1 に答える 1

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
于 2011-02-09T14:43:50.467 に答える