量化字符串之间字符转换数量的快速方法(python 或其中的库)

Fast method to quantify number of character transpositions between strings (python or libraries within)

假设我们有两个字符串:

    x1 = "abcdef"
    x2 = "abdcfe"

    x1 == x2 # return False

我的目标是找出这两个具有相同字符的字符串之间有多少换位。在上面的示例中,有 2 个或 4 个,具体取决于您如何查看它(仍然是偶数,所以两种方式都有效)。另一种方法是对字符串中的字符进行排序,然后像这样进行比较:

    x1s = ''.join(sorted(x1)) # 'abcdef'
    x2s = ''.join(sorted(x2)) # 'abcdef'

    x1s  == x2s # returns True of course

这样一来,就失去了换位的数量。无法想象简单的 Levenshtein 对此有何帮助,因为使用可用的相同字符以外的编辑次数具有相同的权重。例如

    #pip install python-Levenshtein # you'll need this
    from Levenshtein import distance

    distance(x1, x2) # gives 3
    distance(x1s, x2s) # gives 0

有什么想法吗?

好的,找到答案了,这里是:

    len([i for i, j in zip(x1, x2) if i != j])

而这个 returns 换位计数。