猿问

python:如何针对大写字母按字母顺序对列表进行排序

我正在尝试按字母顺序对列表进行排序,其中大写字母应位于小写字母之前。


l = ['a', 'b', 'B', 'A']

sorted(l) 应该导致 ['A','a','B','b']


我已经尝试过这两种形式,但无济于事。


>>> sorted(l, key=lambda s: s.lower())

['a', 'A', 'b', 'B']

>>> sorted(l, key=str.lower)

['a', 'A', 'b', 'B']


蝴蝶不菲
浏览 463回答 2
2回答

皈依舞

创建一个元组作为密钥:>>> sorted(lst, key=lambda L: (L.lower(), L))['A', 'a', 'B', 'b']这意味着小写字母的排序顺序不会改变,('a', 'a')但是大写字母的第一个键使其与小写字母相等,然后在其前面进行排序:例如('a', 'A')<('a', 'a')

万千封印

有趣的是,这样的列表应该如何对以下列表进行排序lst = ['abb', 'ABB', 'aBa', 'AbA']拟议的解决方案产生以下结果>>> sorted(lst, key=lambda L: (L.lower(), L))['AbA', 'aBa', 'ABB', 'abb']我可以提出不同结果的更复杂的解决方案>>> sorted(lst, key=lambda a: sum(([a[:i].lower(),&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; a[:i]] for i in range(1, len(a)+1)),[]))['ABB', 'AbA', 'aBa', 'abb']
随时随地看视频慕课网APP

相关分类

Python
我要回答