如何对字母排序

时间:2019-06-28 16:44:39

标签: python-3.x sorting

输入abcdABCD
输出AaBbCcDd

ms=[]

n = input()
for i in n:
    ms.append(i)
    ms.sort()
print(ms)

它给了我ABCDabcd
如何在python中排序?

3 个答案:

答案 0 :(得分:2)

无需导入任何内容,您可以执行以下操作:

arr = "abcdeABCDE"
temp = sorted(arr, key = lambda i: (i.lower(), i))
result = "".join(temp)
print(result) # AaBbCcDdEe

该键将接受arr的每个元素,并首先通过降低大小写对其进行排序,然后如果绑定,它将根据其原始值对其进行排序。它将所有相似的字母组合在一起(A与a,B与b),然后将大写字母放在首位。

答案 1 :(得分:1)

使用排序键:

ms = "abcdABCD"
sorted_ms = sorted(ms, key=lambda letter:(letter.upper(), letter.islower()))
# sorted_ms = ['A', 'a', 'B', 'b', 'C', 'c', 'D', 'd']
sorted_str = ''.join(sorted_ms)
# sorted_str = 'AaBbCcDd'

为什么有效:

您可以使用key函数中的sorted参数或list.sort()方法来指定排序标准-这需要一个函数或lambda来接受元素问题,并输出进行排序的新标准。如果“新条件”是一个元组,则第一个元素优先-如果相等,则第二个参数,依此类推。

因此,我在此处提供的lambda返回一个2元组:

(letter.upper(), letter.islower())

letter.upper()作为此处的第一个元素,意味着将按字母顺序对字符串进行排序,但不区分大小写(因为它将对它们进行排序都是大写)。然后,我使用letter.islower()作为第二个参数,如果字母为小写,则为True,否则为False。排序时,False位于True之前-这意味着,如果输入大写字母和小写字母,大写字母将排在首位。

答案 2 :(得分:0)

尝试一下:

>>>s='abcdABCD'
>>>''.join(sorted(s,key=lambda x:x.lower()))
'aAbBcCdD'