为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

蝴蝶不菲 2021-03-17 10:12:31
我正在尝试按字母顺序对列表进行排序,其中大写字母应位于小写字母之前。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']
查看完整描述

2 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

创建一个元组作为密钥:


>>> sorted(lst, key=lambda L: (L.lower(), L))

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

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


查看完整回答
反对 回复 2021-03-24
?
万千封印

TA贡献1891条经验 获得超3个赞

有趣的是,这样的列表应该如何对以下列表进行排序


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(), 

                                    a[:i]] for i in range(1, len(a)+1)),[]))

['ABB', 'AbA', 'aBa', 'abb']


查看完整回答
反对 回复 2021-03-24
  • 2 回答
  • 0 关注
  • 462 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信