我有以下内容:
sorted( ("A","a","b","B","CC","c"), key=lambda x: x.lower() )
这将会得到:
['A', 'a', 'b', 'B', 'c', 'CC']
我该如何进行这样的排序:
['a', 'A', 'b', 'B', 'c', 'CC']
如果有两个相同的值,则较小的值排在前面——a优先于A。
我猜我需要这样做:
sorted( ("A","a","b","B","CC","c"), key=lambda x: (x.lower(),x) )
但这会先显示 A 再显示 a:
['A', 'a', 'B', 'b', 'c', 'CC']
我该如何做相反的操作?
更新
为了进一步澄清,以下字符串:["A","a","aA","aa"] 应按以下方式排序:
["a","A","aa","aA"]
因此,“aa”在“aA”之前,“aaA”在“aAa”之前,以此类推。
因此:
lst = ["A","aA","aa","aaa","aAa","aaA","b","B","CC","c"]
应该排序为:
['A', 'aa', 'aA', 'aaa', 'aaA', 'aAa', 'b', 'B', 'c', 'CC']
sorted
是稳定排序算法:如果多个记录具有相同的键(如您的情况中的a
和A
),它们的原始顺序将被保留。 - Daweo