输入:abcdABCD
输出:AaBbCcDd
ms=[]
n = input()
for i in n:
ms.append(i)
ms.sort()
print(ms)
它给了我ABCDabcd
。
如何在python中排序?
答案 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'