例如说我有单词和任意字符串

LEAST HDKEN


现在说我将“最少”重新安排为“偷”。我想将相同的“转换”应用于第二个单词。

STEAL ENDKH


因此,由于LEAST中的L(第一个字符)到达了(STEAL的)结尾,因此字符串(H)的第一个字符也到达了结尾位置。其余的类似。

最佳答案

将两个字符串压缩在一起,以便对字母进行排序。然后排序并解压缩。

>>> zip(*sorted(zip('LEAST', 'HDKEN'), key=lambda s:'STEAL'.index(s[0])))
[('S', 'T', 'E', 'A', 'L'), ('E', 'N', 'D', 'K', 'H')]


或者,更长一点:

# Make pairs of letters
pairs = zip('LEAST', 'HDKEN')
# Sort pairs, using the index into STEAL as the sort key
sortedpairs = sorted(pairs, key=lambda s:'STEAL'.index(s[0]))
# Unzip the pairs back into words
result = zip(*sortedpairs)
# Print the words
print ''.join(result[0]), ''.join(result[1])


(根据需要打印STEAL ENDKH

关于python - 如何对一项进行排序以匹配另一项,但如何将其应用于其他项?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24152993/

10-12 22:42