Python 3.x 如何对字母表排序

Python 3.x 如何对字母表排序,python-3.x,sorting,Python 3.x,Sorting,输入:abcdABCD 输出:AaBbCcDd ms=[] n = input() for i in n: ms.append(i) ms.sort() print(ms) 它给了我ABCDabcd 如何在python中对此进行排序?无需导入任何内容,您可能可以执行以下操作: arr=“abcdeABCDE” temp=排序(arr,key=lambda i:(i.lower(),i)) 结果=”.加入(临时) 打印(结果)#AaBbCcDdEe 键将接收arr的每个元素,

输入
abcdABCD

输出
AaBbCcDd

ms=[]

n = input()
for i in n:
    ms.append(i)
    ms.sort()
print(ms)
它给了我
ABCDabcd


如何在python中对此进行排序?

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

arr=“abcdeABCDE”
temp=排序(arr,key=lambda i:(i.lower(),i))
结果=”.加入(临时)
打印(结果)#AaBbCcDdEe
键将接收arr的每个元素,并首先通过降低其大小写对其进行排序,然后如果它绑定,则将根据其原始值对其进行排序。它会将所有相似的字母组合在一起(A和A,B和B),然后将大写字母放在第一位。

使用排序键:

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'
为什么这样做:

您可以使用
sorted
函数中的
key
参数或
list.sort()
方法指定排序所依据的标准-这需要一个函数或lambda来获取相关元素,并输出一个新的标准来对其进行排序。如果“新条件”是一个元组,那么第一个元素优先——如果它相等,那么第二个参数优先,依此类推

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

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

尝试以下方法:

>>>s='abcdABCD'
>>>''.join(sorted(s,key=lambda x:x.lower()))
'aAbBcCdD'
有不同的排序或字母排序方式,因此您可以为您想要的排序添加详细的要求(例如,始终将大写字母排序在小写之前,数字、umlauts等如何)。有关大写/小写顺序,请参见此。