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

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']

最佳答案

创建一个元组作为 key :

>>> sorted(lst, key=lambda L: (L.lower(), L))
['A', 'a', 'B', 'b']

这意味着小写字母的排序顺序不会更改('a', 'a'),但意味着大写字母的第一个键将其与小写字母等效,然后在其之前进行排序:例如('a', 'A') <('a', 'a')

10-06 13:36
查看更多