У меня был быстрый вопрос об эффективности поиска в больших словарях в 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
Это бесконечно быстрее и может читать/записывать более 350 000 строк кода за 3 секунды.
Мой вопрос в том, почему команда if key in data_dict.keys():
принимает sooo намного дольше, чем вызов try: data_dict[keyStr]
? И почему Python не использовал инструкцию try
при поиске ключа в словаре?