在使用 Python 字典时,我通常使用以下习惯用法:
try:
val = dct[key]
except KeyError:
print key, " is not valid"
因为对于大型词典,声明
if key in dct:
# do something
效率不高(所以我记得读过,但我在实践中也注意到了)
今天我正在使用一个 defaultdict 并且有一刻我忘记了 defaultdict 永远不会给你一个 KeyError 而是会更新原始字典。
如何在不更新默认字典的情况下执行查找?我真的需要打印一个错误,以便用户可以重新输入密钥。
谢谢!
更新:几张海报暗示我认为if key in dct:
缓慢是错误的。我回去检查了我读过的那本更好用的书try: except:
。它是 2002 年的 Python Cookbook,Alex Martelli 的食谱 1.4,也可以在这里在线找到:Add an entry to dictionary。过去的记忆是如此的不可靠!该食谱没有提到“较慢”,甚至没有使用in
but has_key
。它只是说它try: except:
更像 Pythonic(至少是食谱的书本版本)。感谢您的更正和答案。