2016-05-08 348 views
2

我正在嘗試創建一個程序,按照我選擇的字母順序排列單詞列表,但我對如何開始有點困惑。Python:按照字母順序排列的單詞排序列表

舉例來說,如果所選擇的字母順序是:UVWXYZNOPQRSTHIJKLMABCDEFG 然後文字會在該順序進行排序:

  • WHATEVER
  • ZONE
  • HOW
  • 無論其
  • HILL
  • ANY
  • COW

回答

3

您可以使用字母映射到整數列表的排序鍵,以便爲整數,其中排序:

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