Wil*_*ran 0 python google-app-engine exception-handling exception list
Python习语和语法的新手.我有一个数据存储StringListProperty,用于保存用户密钥.对于大多数实体,此属性将具有0-10个键,有时甚至更多.我需要检查属性是否有密钥,最常见的是没有匹配.
if entity.string_list.index(user_key) is not None:
# ....
Run Code Online (Sandbox Code Playgroud)
当没有匹配的密钥时,这会抛出错误.我可以捕获异常,但我怀疑我没有正确理解如何检查列表中的匹配.
首先,如果您要进行大量搜索,除非需要维护订单,否则应使用集合或字典而不是列表.列表上的查找是O(n),我知道元组/字典要好得多.我相信不断的时间查找.
其次,你说得对try/catch语句,你应该使用,如果你预期大部分的时间有WILL是一个匹配.
第三,我认为你在寻找,
if user_key in entity.string_list:
idx = entity.string_list.index(user_key)
Run Code Online (Sandbox Code Playgroud)
编辑:这里有两个链接,阐明运行时保证.编码时要非常好的东西,以便自动保持运行时自动停机
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
108 次 |
| 最近记录: |