我有一个关于通过Python搜索大字典的效率的快速问题。我正在阅读一个以逗号分隔的大文件,并从每行获取一个键和值。如果我的密钥已经在字典中,那么我将该值添加到字典中列出的值中,如果密钥不存在于字典中,我只需添加该值即可。以前我是用这样的:高效的词典搜索?
if key in data_dict.keys():
add values
else:
data_dict[key] = value
这将启动非常快,但作为字典的增长就变得越来越慢,到了那里,我不能用它在所有的点。我改变了我寻找在字典这个关键的途径:
try:
# This will fail if key not present
data_dict[keyStr] = input_data[keyStr] + load_val
except:
data_dict[keyStr] = load_val
这是无限快,可以读/写在3秒内超过35万行代码。
我的问题是为什么if key in data_dict.keys():
命令比使用try: data_dict[keyStr]
要长得多?为什么Python在字典中搜索键时不会使用try
语句?
一般来说,你不想捕获_all_异常,但只有你期望的异常,并在发现它时处理。在这里,例如,使用:'除了KeyError:...' – askewchan
你的示例代码很混乱。在第一个代码片段中,你正在检查'data_dict'中的'key',但在第二个中,只有'key'不在'input_data'中才会导致'KeyError'异常。这使得很难提供完整的答案... – martineau