pos_map = {}
for idx, letter in enumerate(g):
pos_map[letter] = idx
def key(item):
return [pos_map.get(c) for c in item]
sorted(words, key=key)
['revestir', 'miel', 'extraterrestre', 'auto', 'automovil', 'al']
words = ['miel', 'extraterrestre', 'al', 'automovil', 'auto', 'revestir']
g = 'zyxwvutsrqponmlkjihgfedcba'
sorted_words = sorted(words, key=lambda w: [g.index(c) for c in w])
更有效的解决方案不是为每个字母建立索引,而是事先建立一个字典,并为单词中的每个字母使用
get
函数您可以使用
<>强> P.S.这是最简单的,但绝对不是最快的解决方案,所以<强>如果你的输入列表很大,你应该考虑使用其他答案>的解决方案。p>sorted()
并将其作为key
lambda函数传递,该函数将字符串转换为自定义字母表中该字符串每个字符的索引列表:如果速度很重要,而且单词列表甚至有一定的长度,那么最好进行查找,而不是搜索每个单词的每个字符的索引
您可以使用字符串函数
translate()
和maketrans()
创建一种将输入字符串转换为翻译以进行排序的快速方法例如:
如果字符串中的字符不在字母表中,
index()
会阻塞,那么这也有利于对错误进行恢复。它们只是通过,比如:相关问题 更多 >
编程相关推荐