按字母顺序对字符串列表进行排序

7

我有一个问题,如何将这个列表排序:

['Pera','mela','arancia','UVA']

使它变成下面这样:

['arancia','mela','Pera','UVA']

根据练习要求,应该使用带有cmp参数的sorted()函数。


cmp已被弃用,不应再使用。 - Ignacio Vazquez-Abrams
为什么需要任何参数?如果您将其提供给排序函数,它不会正常工作吗? - OneCricketeer
运行sorted(myList)将为您完成此操作。您不需要cmp参数。 - Amin Alaee
它不会改变单词的顺序,而是将大写字母单词排在前面,然后是小写字母单词。 - Doni
不,它必须按字母顺序排序。无论是小写还是大写字母都可以。例如:list['Car','amazing','zipcode','Orange'] 排序为:list['amazing','Car','Orange','zipcode']。 - Doni
4个回答

6
你可以轻松地使用key参数来实现这一点:
my_list = ['Pera','mela','arancia','UVA']
my_list.sort(key=str.lower)

这将首先获取小写字符。

这将在原地更改对象,my_list将被排序。

如果您想要一个新列表,也可以使用相同的key参数使用sorted函数。例如:

my_list = ['Pera','mela','arancia','UVA']
my_sorted_list = sorted(my_list,key=str.lower)

输出结果将是:
>>> my_list
['Pera','mela','arancia','UVA']
>>> my_sorted_list
['arancia', 'mela', 'Pera', 'UVA']

好的答案。还可以注意到,如果需要,sorted可以使用相同的键。 - erip
请您提供此答案的输出结果。 - Amin Alaee
list 方法是就地操作。 - Ignacio Vazquez-Abrams
我不需要首字母小写,只需按字母顺序排序而不考虑大小写... ['Car','amazing','zipcode','Orange'] 变成 ['amazing','Car','Orange','zipcode']。 - Doni
是的,它可以 :D 抱歉和谢谢。 - Doni
显示剩余2条评论

4
你需要根据字符串的小写形式对元素进行排序:
sorted(['Pera','mela','arancia','UVA'], key=str.lower)

这将输出:
['arancia', 'mela', 'Pera', 'UVA']

1
为什么只有第一个字符? - Ignacio Vazquez-Abrams
这实际上是一个错误。小写表示已经足够了 @IgnacioVazquez-Abrams - kardaj

4
使用带有键的sorted()函数。
>>> mc = ['Pera','mela','arancia','UVA']
>>> sorted(mc, key=str.lower)
['arancia', 'mela', 'Pera', 'UVA']

1
这会帮助你:

>>> words = ['Pera','mela','arancia','UVA']
>>> sorted(words)
['Pera', 'UVA', 'arancia', 'mela']
>>> sorted(words, key=str.swapcase)
['arancia', 'mela', 'Pera', 'UVA']

希望这有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接