まず第一に、あなたは秩序を維持する必要がない限り、あなたの代わりに、リストのセットや辞書を使用する必要があります検索の多くをやろうとしている場合。リストのルックアップはO(n)であり、タプル/辞書がはるかに優れていることがわかります。私は一定の時間のルックアップを信じています。
第2に、あなたはtry/catchについて正しいです。あなたがその時間のほとんどを期待している場合は、、と一致する必要があります。
第三に、私はEDIT
if user_key in entity.string_list:
idx = entity.string_list.index(user_key)
、あなたが探していると思う:ここでは、実行時の保証にいくつかの光を当てる2つのリンクがあります。辞書を使用して追加する方法:自動的
http://wiki.python.org/moin/TimeComplexity
http://bayes.colorado.edu/PythonIdioms.html
EDIT2をあなたのランタイムを抑えるためにコーディングするときぶっきらぼう知ることは非常に良いもの。
## pre-initialize a dictionary
lookupdict = dict((val, i) for i, val in enumerate(entity.string_list))
# loop over user_key
idx = lookupdict.get(user_key, None)
if idx is None:
continue
## do something with idx
キーを格納する場合は、StringListPropertyではなくdb.ListProperty(db.Key)を使用する必要があります。 'in'も同様に機能します。 –