我似乎无法理解key和lambda如何与sorted()一起工作。我正在尝试使用一个单词并从小写到大写进行排序,反之亦然,但无法使其正常工作。
s = 'Alphanumerical'
sorted(s)
['A', 'a', 'a', 'c', 'e', 'h', 'i', 'l', 'l', 'm', 'n', 'p', 'r', 'u']
sorted(s, key=lambda x: x.islower())
['A', 'l', 'p', 'h', 'a', 'n', 'u', 'm', 'e', 'r', 'i', 'c', 'a', 'l']
sorted(s, key=lambda x: x.isupper())
['l', 'p', 'h', 'a', 'n', 'u', 'm', 'e', 'r', 'i', 'c', 'a', 'l', 'A']
当我将使用方法从“低/高”更改为“低/高”时,它也没有给我预期的结果。
sorted(s, key=lambda x: x.lower())
['A', 'a', 'a', 'c', 'e', 'h', 'i', 'l', 'l', 'm', 'n', 'p', 'r', 'u']
sorted(s, key=lambda x: x.upper())
['A', 'a', 'a', 'c', 'e', 'h', 'i', 'l', 'l', 'm', 'n', 'p', 'r', 'u']
我可以升序排序a> Z(低到大写)的字母的唯一方法是:
sorted(sorted(s), key=lambda x: x.isupper())
['a', 'a', 'c', 'e', 'h', 'i', 'l', 'l', 'm', 'n', 'p', 'r', 'u', 'A']
另一个例子是,我想对一个数字列表进行升序排序,从奇数到偶数,但它也没有用!
d = [1,2,30,0,2,3,4,8,1,2]
sorted(d)
[0, 1, 1, 2, 2, 2, 3, 4, 8, 30]
sorted(d, key=lambda x: x%2 == 0)
[1, 3, 1, 2, 30, 0, 2, 4, 8, 2]
我在这里想念什么?
答案 0 :(得分:1)
您可以使用ord
asc = sorted(s, key=lambda x: ord(x))
"A" "a" "a" "c" "e" "h" "i" "l" "l" "m" "n" "p" "r" "u"
desc = sorted(s, key=lambda x: -ord(x))
"u" "r" "p" "n" "m" "l" "l" "i" "h" "e" "c" "a" "a" "A"