擅长:python、mysql、java
<p>另一种方法是使用<code>str.translate</code>方法,该方法在两组字符串之间构建转换表,如下所示:</p>
<pre><code>>>> ascii_letters = 'abccdefgghiijklmnooprsstuuvyz'
>>> turkish_letters = 'abcçdefgğhıijklmnoöprsştuüvyz'
#Build the translation table, notice how I've added extra chars in second
#string to account for special Turkish letters. Basically they should have
#the same length
>>> turkishTable = str.maketrans(turkish_letters, ascii_letters)
>>>
>>> s = 'Çınar'
>>>
>>> s.lower().translate(turkishTable)
'cinar'
>>> player_list = ['Zeynep','Ahmet', 'Çınar', 'Oğuz']
>>>
>>> sorted(player_list, key=lambda s: s.lower().translate(turkishTable))
['Ahmet', 'Çınar', 'Oğuz', 'Zeynep']
</code></pre>
<p>然后,您可以在<code>Player</code>类中添加另一个属性,并调用它,例如<code>self.translated_name</code>,在该类中,您使用该属性与<code>operator.attrgetter</code>一起保存<em>翻译名称</em>和<code>sort</code>:</p>
<pre><code>>>> from operator import attrgetter
>>> sorted(list_of_player_object, key=attrgetter('translated_name'))
</code></pre>