python sorted函数key_Python3 sorted函数中key参数的作用原理

关键之处如donghui所说,FALSE

key为元组的排序情况,是每个待排序元素生成一个元组(x.isdigit(), x.isdigit() and int(x) % 2 == 0, x.isupper(), x.islower(), x),排序时是根据这个元组排序,依据是FALSE

测试代码如下:(来源自dokelung和donghui)

if __name__ == '__main__':

s = 'asdf234GDSdsf23'

print('key=x')

s = sorted(s, key=lambda x: x)

for x in s:

print((x, x))

print('key=islower()')

s = sorted(s, key=lambda x: x.islower())

for x in s:

print((x.islower(), x))

print('key=isupper()')

s = sorted(s, key=lambda x: x.isupper())

for x in s:

print((x.isupper(), x))

print('key=isdigit() and int(x)%2==0')

s = sorted(s, key=lambda x: x.isdigit() and int(x) % 2 == 0)

for x in s:

print((x.isdigit() and int(x) % 2 == 0, x))

print('key=(x.isupper(), x.islower())')

s = sorted(s, key=lambda x: (x.isupper(), x.islower()))

for x in s:

print((x.isupper(), x.islower(), x))

print('key=(x.isdigit(), x.isdigit() and int(x) % 2 == 0, x.isupper(), x.islower(), x))')

s = sorted(s, key=lambda x: (x.isdigit(), x.isdigit() and int(x) % 2 == 0, x.isupper(), x.islower(), x))

for x in s:

print((x.isdigit(), x.isdigit() and int(x) % 2 == 0, x.isupper(), x.islower(), x))

运行查看输入可以发现规律。

输出:

key=x

('2', '2')

('2', '2')

('3', '3')

('3', '3')

('4', '4')

('D', 'D')

('G', 'G')

('S', 'S')

('a', 'a')

('d', 'd')

('d', 'd')

('f', 'f')

('f', 'f')

('s', 's')

('s', 's')

key=islower()

(False, '2')

(False, '2')

(False, '3')

(False, '3')

(False, '4')

(False, 'D')

(False, 'G')

(False, 'S')

(True, 'a')

(True, 'd')

(True, 'd')

(True, 'f')

(True, 'f')

(True, 's')

(True, 's')

key=isupper()

(False, '2')

(False, '2')

(False, '3')

(False, '3')

(False, '4')

(False, 'a')

(False, 'd')

(False, 'd')

(False, 'f')

(False, 'f')

(False, 's')

(False, 's')

(True, 'D')

(True, 'G')

(True, 'S')

key=isdigit() and int(x)%2==0

(False, '3')

(False, '3')

(False, 'a')

(False, 'd')

(False, 'd')

(False, 'f')

(False, 'f')

(False, 's')

(False, 's')

(False, 'D')

(False, 'G')

(False, 'S')

(True, '2')

(True, '2')

(True, '4')

key=(x.isupper(), x.islower())

(False, False, '3')

(False, False, '3')

(False, False, '2')

(False, False, '2')

(False, False, '4')

(False, True, 'a')

(False, True, 'd')

(False, True, 'd')

(False, True, 'f')

(False, True, 'f')

(False, True, 's')

(False, True, 's')

(True, False, 'D')

(True, False, 'G')

(True, False, 'S')

key=(x.isdigit(), x.isdigit() and int(x) % 2 == 0, x.isupper(), x.islower(), x))

(False, False, False, True, 'a')

(False, False, False, True, 'd')

(False, False, False, True, 'd')

(False, False, False, True, 'f')

(False, False, False, True, 'f')

(False, False, False, True, 's')

(False, False, False, True, 's')

(False, False, True, False, 'D')

(False, False, True, False, 'G')

(False, False, True, False, 'S')

(True, False, False, False, '3')

(True, False, False, False, '3')

(True, True, False, False, '2')

(True, True, False, False, '2')

(True, True, False, False, '4')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值