2
我正在嘗試創建一個程序,按照我選擇的字母順序排列單詞列表,但我對如何開始有點困惑。Python:按照字母順序排列的單詞排序列表
舉例來說,如果所選擇的字母順序是:UVWXYZNOPQRSTHIJKLMABCDEFG 然後文字會在該順序進行排序:
- WHATEVER
- ZONE
- HOW
- 無論其
- HILL
- ANY
- 茸
- COW
我正在嘗試創建一個程序,按照我選擇的字母順序排列單詞列表,但我對如何開始有點困惑。Python:按照字母順序排列的單詞排序列表
舉例來說,如果所選擇的字母順序是: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']