Python:按选定字母顺序排列的单词列表
我正在尝试创建一个程序,用我选择的字母顺序对单词列表进行排序,但我对如何开始有点困惑 例如,如果选择的字母顺序是:UVWXYZNOPQRSTHIJKLMABCDEFG 然后单词将按以下顺序排序:Python:按选定字母顺序排列的单词列表,python,alphabet,Python,Alphabet,我正在尝试创建一个程序,用我选择的字母顺序对单词列表进行排序,但我对如何开始有点困惑 例如,如果选择的字母顺序是:UVWXYZNOPQRSTHIJKLMABCDEFG 然后单词将按以下顺序排序: 随便 地带 怎么 然而 山丘 任何 鹿角 母牛 您可以使用排序键将字母映射到整数列表,整数按排序顺序排列: sort_key = {l: i for i, l in enumerate('UVWXYZNOPQRSTHIJKLMABCDEFG')} sorted_words = sorted(words
- 随便
- 地带
- 怎么
- 然而
- 山丘
- 任何
- 鹿角
- 母牛
sort_key = {l: i for i, l in enumerate('UVWXYZNOPQRSTHIJKLMABCDEFG')}
sorted_words = sorted(words, key=lambda w: [sort_key[l] for l in w])
列表按字典顺序排列,也就是说,通过逐个比较两个列表的元素,直到找到不同的元素,然后确定顺序。因为单词'ANTLER'
和'ANY'
分别映射到[19,6,12,17,23,10]
和[19,6,4]
,因此'ANY'
将首先作为4<10
列出
演示:
>>> words = ['ANTLER', 'ANY', 'COW', 'HILL', 'HOW', 'HOWEVER', 'WHATEVER', 'ZONE']
>>> sort_key = {l: i for i, l in enumerate('UVWXYZNOPQRSTHIJKLMABCDEFG')}
>>> sorted(words, key=lambda w: [sort_key[l] for l in w])
['WHATEVER', 'ZONE', 'HOW', 'HOWEVER', 'HILL', 'ANY', 'ANTLER', 'COW']