Мое понимание того, что вы хотите сделать, таково:
- У вас есть список TCL, который содержит несколько строк
- У вас есть строка поиска, которая точно не соответствует ни одной из строк в вашем списке
- Вы хотите отсортировать строки в списке по их близости к строке поиска.
Одним из способов измерения расстояния между двумя строками является правка или расстояние Левевштейна . В вики TCL есть страница, которая дает реализацию TCL этого алгоритма . Затем вы можете создать список списков, в котором каждый подсписок содержит строку кандидата и его расстояние от строки поиска. Приведенный ниже код показывает, как отсортировать этот список с помощью команды lsort:
set myList [list {AADD 3} {AABC 2} {AAAB 1} {DCBA 4}]
puts $myList
set sortedList [lsort -integer -index 1 $myList]
puts $sortedList
Это приводит к следующему выводу:
{AADD 3} {AABC 2} {AAAB 1} {DCBA 4}
{AAAB 1} {AABC 2} {AADD 3} {DCBA 4}
Это тот тип, к которому вы стремитесь, или я неправильно истолковал то, что вы пытаетесь сделать?