Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:按选定字母顺序排列的单词列表_Python_Alphabet - Fatal编程技术网

Python:按选定字母顺序排列的单词列表

Python:按选定字母顺序排列的单词列表,python,alphabet,Python,Alphabet,我正在尝试创建一个程序,用我选择的字母顺序对单词列表进行排序,但我对如何开始有点困惑 例如,如果选择的字母顺序是:UVWXYZNOPQRSTHIJKLMABCDEFG 然后单词将按以下顺序排序: 随便 地带 怎么 然而 山丘 任何 鹿角 母牛 您可以使用排序键将字母映射到整数列表,整数按排序顺序排列: sort_key = {l: i for i, l in enumerate('UVWXYZNOPQRSTHIJKLMABCDEFG')} sorted_words = sorted(words

我正在尝试创建一个程序,用我选择的字母顺序对单词列表进行排序,但我对如何开始有点困惑

例如,如果选择的字母顺序是:UVWXYZNOPQRSTHIJKLMABCDEFG 然后单词将按以下顺序排序:

  • 随便
  • 地带
  • 怎么
  • 然而
  • 山丘
  • 任何
  • 鹿角
  • 母牛

您可以使用排序键将字母映射到整数列表,整数按排序顺序排列:

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']