Мне нужен «diccionary», ключами которого являются строки, но вам не нужно вводить все слово, чтобы получить доступ к соответствующему значению, только некоторые из первых символов, их достаточно, чтобы не соответствовать ни одному другому ключу (аналогично вводу в консоли, и нажмите tab, и консоль угадывает правильную команду, потому что другие не совпадают с ней)
Например, в словаре:
dicc = { 'suma':fun_suma, 'resta':fun_resta, 'producto':fun_producto }
Мне нужно это dicc['pr']
, dicc['prod']
, dicc['produc']
, даже просто dicc['p']
, возвращает fun_producto
(в этом примере, поскольку введенные строки не соответствуют ни одной другой клавише).
Есть ли в python какая-либо структура, которая это делает? Если нет, какой алгоритм вы предлагаете построить? Я знаю, что за любым python словарем существует эффективное дерево ключей, которое позволяет быстро найти запрашиваемый ключ. Я хотел бы воспользоваться этим.
ОБНОВЛЕНИЯ:
- Да, я ошибся, словарь python использует таблицу Ha sh, а не дерево. Я перепутал свои воспоминания.
- Да, dicc ['p'] был драматическим примером c, но я использовал его только для того, чтобы показать, что в некоторых случаях он может так сильно сократить запись каратэров. Конечно, это будет полезно, только если ключи хорошо известны и имеют конечный набор, например, синтаксический анализатор.