如何排序一个项目以匹配另一个项目,但在其他地方应用排序?

时间:2014-06-11 00:37:57

标签: python string sorting

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

LEAST HDKEN

现在说我重新排列至史蒂夫。我想对第二个词应用相同的“转换”。

STEAL ENDKH

因此,由于LEAST中的L(第一个字符)结束(STEAL),因此字符串(H)的第一个字符也会到达结束位置。其他类似的情况也是如此。

1 个答案:

答案 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