例如说我有单词和任意字符串
LEAST HDKEN
现在说我重新排列至史蒂夫。我想对第二个词应用相同的“转换”。
STEAL ENDKH
因此,由于LEAST中的L(第一个字符)结束(STEAL),因此字符串(H)的第一个字符也会到达结束位置。其他类似的情况也是如此。
答案 0 :(得分:3)
将两个字符串压缩在一起,以便对字母对进行排序。然后排序并解压缩。
>>> 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
)