Python: try-except vs if-else to check dict keys
我遇到了一些代码,不知怎么的,我觉得这很奇怪。
1 2 3 4 5 | var = None try: var = mydict[a][b] except: pass |
我不太习惯用
1 2 3 4 | var = None if a in mydict: if b in mydict[a]: var = mydict[a][b] |
使用一种方法比使用另一种方法有"明显"的优势/劣势吗?
异常处理通常比if语句慢得多。有了嵌套字典,很容易理解作者为什么使用异常语句。但是,以下内容也会起作用。
1 2 3 4 5 6 | var = mydict.get(a,{}).get(b,None) if var is None: print("Not found") else: print("Found:" + str(var)) |
在
一个缺点是这两个片段不相等,第一个缺点是一个笼统的说法,即不管发生什么,都要保持安静。
要使它们相等,请修改第一个代码段以仅捕获
1 2 3 4 5 | var = None try: var = mydict[a][b] except KeyError: pass |
正如他们所看到的,如果发生了除
请注意,在这种情况下,您可以选择:
1 | var = mydict.get(a, {}).get(b) |