Вот одна строка:
items = ["abc", "abcd", "abcde", "zasd"]
query = "abcd"
best_match = max((os.path.commonprefix([item, query]), item) for item in items)[1]
Это относится ко всем элементам с одинаковой длиной общего префикса одинаково.Если вы хотите предпочесть меньшие:
best_match = max((os.path.commonprefix([item, query]), -len(item), item) for item in items)[2]