如何以更接近的匹配方式获取排序列表?

Oli*_*One 0 algorithm tcl

可以使用哪种排序算法通过给定的字符串输入获得更接近和近似的匹配列表:

  1. 字符串列表
  2. tobesearch_str

Jac*_*son 5

我对你想做什么的理解如下:

  1. 您有一个包含许多字符串的TCL列表
  2. 您的搜索字符串与列表中的任何字符串都不完全匹配
  3. 您希望根据它们与搜索字符串的接近程度对列表中的字符串进行排序.

测量两个弦的接近程度的一种方法是编辑或Levevshtein距离.TCL wiki上有一个页面,它提供了此算法TCL实现.然后你可以做的是创建一个列表列表,其中每个子列表包含候选字符串及其与搜索字符串的距离.下面的代码显示了如何使用lsort命令对此列表进行排序:

set myList [list  {AADD 3} {AABC 2} {AAAB 1} {DCBA 4}]
puts $myList
set sortedList [lsort -integer -index 1 $myList]
puts $sortedList
Run Code Online (Sandbox Code Playgroud)

这导致以下输出:

{AADD 3} {AABC 2} {AAAB 1} {DCBA 4}
{AAAB 1} {AABC 2} {AADD 3} {DCBA 4}
Run Code Online (Sandbox Code Playgroud)

这是你所追求的那种,还是我误解了你想要做的事情?