Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何对列表进行排序,以将所有小写字母置于大写字母之前?_Python_Sorting - Fatal编程技术网

Python 如何对列表进行排序,以将所有小写字母置于大写字母之前?

Python 如何对列表进行排序,以将所有小写字母置于大写字母之前?,python,sorting,Python,Sorting,我遵循了这一点,并尝试了各种可能性以获得所需的输出 sorted(['aa', 'bb', '_dd', 'BB', 'AA']) ['AA', 'BB', '_dd', 'aa', 'bb'] sorted(['aa', 'bb', '_dd', 'BB', 'AA'], reverse=True) ['bb', 'aa', '_dd', 'BB', 'AA'] sorted(['aa', 'bb', '_dd', 'BB', 'AA'], key=str.lower) ['_dd', '

我遵循了这一点,并尝试了各种可能性以获得所需的输出

sorted(['aa', 'bb', '_dd', 'BB', 'AA'])
['AA', 'BB', '_dd', 'aa', 'bb']

sorted(['aa', 'bb', '_dd', 'BB', 'AA'], reverse=True)
['bb', 'aa', '_dd', 'BB', 'AA']

sorted(['aa', 'bb', '_dd', 'BB', 'AA'], key=str.lower)
['_dd', 'aa', 'AA', 'bb', 'BB']

sorted(['aa', 'bb', '_dd', 'BB', 'AA'], reverse=True, key=str.lower)
['bb', 'BB', 'aa', 'AA', '_dd']

sorted(sorted(['aa', 'bb', '_dd', 'BB', 'AA'], reverse=False), key=str.lower)
['_dd', 'AA', 'aa', 'BB', 'bb']

sorted(sorted(['aa', 'bb', '_dd', 'BB', 'AA'], reverse=True), key=str.lower)
['_dd', 'aa', 'AA', 'bb', 'BB']

sorted(sorted(['aa', 'bb', '_dd', 'BB', 'AA'], reverse=True), key=lambda x: (x.lower(), x.swapcase()))
['_dd', 'aa', 'AA', 'bb', 'BB']

sorted(['aa', 'bb', '_dd', 'BB', 'AA'], key=str.istitle)
['aa', 'bb', '_dd', 'BB', 'AA']

sorted(['aa', 'bb', '_dd', 'BB', 'AA'], reverse=True, key=str.istitle)
['aa', 'bb', '_dd', 'BB', 'AA']

sorted(['aa', 'bb', '_dd', 'BB', 'AA'], reverse=False, key=str.istitle)
['aa', 'bb', '_dd', 'BB', 'AA']

sorted(sorted(['aa', 'bb', '_dd', 'BB', 'AA']), key=str.istitle)
['AA', 'BB', '_dd', 'aa', 'bb']

sorted(sorted(['aa', 'bb', '_dd', 'BB', 'AA'], reverse=True), key=str.istitle)
['bb', 'aa', '_dd', 'BB', 'AA']
但我需要输出的顺序是这样的

['_dd', 'aa', 'bb', 'AA', 'BB']
试试这个:

sorted(['aa', 'bb', '_dd', 'BB', 'AA'], key=lambda s: (s.upper() == s, s))
元组按第一项排序在第二项之前,bool按False排序在true之前,因此
s.upper()==s
将所有非大写元组排序在其他元组之前

请注意,如果您的目的是面向语言的排序,您可能应该考虑使用
key=functools.cmp\u to\u key(locale.strcoll)
或类似的方法。

也许:
key=lambda s:(s.isalpha(),s.swapcase())
是的,它起作用了<代码>已排序(已排序(['aa','bb','u dd','bb','aa']),key=lambda s:(s.isalpha(),s.swapcase())