Делаю олимпиадную задачу, её суть такова:
Цель в данной задаче — реализовать простую телефонную книгу, поддерживающую три следующих типа запросов. С указанными ограничениями данная задача может быть решена с использованием таблицы с прямой адресацией.
Первый ввод - количество последующих запросов.
add number name: добавить запись с именем name и телефонным номером number. Если запись с таким телефонным номером уже есть, нужно заменить в ней имя на name.
del number: удалить запись с соответствующим телефонным номером. Если такой записи нет, ничего не делать.
find number: найти имя записи с телефонным номером number. Если запись с таким номером есть, вывести имя. В противном случае вывести not found (без кавычек).
Другими словами, необходимо реализовать структуру данных, эффективно обрабатывающую запросы вида add number name, del number и find number.
Мой код работает, но он не проходит последний тест (в нем очень много данных). Как этот код можно значительно ускорить?
import re
countOperation = int(input())
phoneBook = []
def add(number, name):
for i in phoneBook:
if i[0] == number:
i[1] = name
return
phoneBook.append([number, name])
def delete(number):
for i in phoneBook:
if i[0] == number:
phoneBook.remove(i)
return
def find(number):
for i in phoneBook:
if i[0] == number:
print(i[1])
return
print('not found')
while countOperation > 0:
operation = input().split(' ')
if (operation):
command = operation[0]
number = operation[1]
try:
name = operation[2]
except IndexError:
name = None
if (command == 'add'):
add(int(number), name)
elif (command == 'del'):
delete(int(number))
elif (command == 'find'):
find(int(number))
countOperation -= 1
Я не знаю что еще можно придумать что бы ускорить его.