<p>使用类似的东西(这只是我在Google上找到的第一个将数字的英文表示形式转换为整数值的东西;您使用的任何东西都需要能够将实际数据转换为可排序的东西):<a href="https://pypi.org/project/word2number/" rel="nofollow noreferrer">https://pypi.org/project/word2number/</a></p>
<pre><code>from word2number import w2n
main_list.sort(key=w2n.word_to_num)
</code></pre>
<p>或者根据您的数据提出您自己的低俗版本。以您为例,您可以执行以下操作:</p>
<pre><code>number_words = {
'one': 1,
'two': 2,
'three': 3,
'four': 4,
'five': 5,
'six': 6,
'seven': 7,
'eight': 8,
'twenty': 20,
'forty': 40,
'sixty': 60,
}
def word_to_number(word: str) -> int:
if word in number_words:
return number_words[word]
# Try chomping each number out of the word.
for n in number_words:
if word.endswith(n):
return number_words[n] + word_to_number(word[:-len(n)])
raise ValueError(f"I don't know what number '{word}' is!")
</code></pre>
<pre><code>>>> main_list
['one', 'two', 'sixtyfour', 'five', 'six', 'twentyone', 'three', 'four', 'seven', 'eight', 'fortyfour']
>>> sorted(main_list, key=word_to_number)
['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'twentyone', 'fortyfour', 'sixtyfour']
</code></pre>