如何玩转sorted()函数

python排序中,sorted()方法是比较常用的。此方法有三个参数:iterable,key,reverse。
iterable是一个可迭代数据,常见的有列表,集合,元祖,字典。key表示用哪个值进行排序,reverse表示是升序还是降序,默认情况为升序。

列表

列表排序是一个最常见不过的了。

a_list = [1,22,33,11,21,22,100]
print(sorted(a_list))

结果为:

    [1, 11, 21, 22, 33, 100]

稍复杂的列表可能是这样的:

c = [(97,"a"),(97,"y"),(97,"i"),(97,"b"),(97,"w"),(10,"10"),(100,"100")]

若需要以 列表c中的 每个元素的第一个数据进行排序,则:

print(sorted(c,key=lambda l:l[0], reverse=False))

结果为:

[(10, '10'), (97, 'a'), (97, 'y'), (97, 'i'), (97, 'b'), (97, 'w'), (100, '100')]

若需要以列表c中的每个元素的第一个数据排序后按照第二个数据排序,则:

print(sorted(c,key=lambda l:(l[0],l[1]), reverse=False))

结果为:

[(10, '10'), (97, 'a'), (97, 'b'), (97, 'i'), (97, 'w'), (97, 'y'), (100, '100')]

与列表排序相似的还有集合,元祖。

a_set = {1,22,33,11,21,24,100}
a_tuple = (1,22,33,11,21,24,100)

print(sorted(a_set))
print(sorted(a_tuple))

结果为:

[1, 11, 21, 22, 24, 33, 100]
[1, 11, 21, 22, 24, 33, 100]

字典

有时候我们需要对字典进行排序。比如有这么一个字典如下:

b = {"a":"A","g":"G","c":"C","v":"V","d":"V"}

若需要以字典的键进行排序,则:

print(sorted(b.items(),key=lambda kv:kv[0], reverse=False))

结果为:

[('a', 'A'), ('c', 'C'), ('d', 'V'), ('g', 'G'), ('v', 'V')]

若需要以字典的键进行倒序排序,则:
结果为:

[('v', 'V'), ('g', 'G'), ('d', 'V'), ('c', 'C'), ('a', 'A')]

若需要以字典的值进行排序,则:

print(sorted(b.items(),key=lambda kv:kv[1], reverse=False))

结果为:

[('a', 'A'), ('c', 'C'), ('g', 'G'), ('v', 'V'), ('d', 'V')]

若需要以字典的值先进行排序,后根据字典的键进行排序,则:

print(sorted(b.items(),key=lambda kv:(kv[1],kv[0]), reverse=False))

结果为:

[('a', 'A'), ('c', 'C'), ('g', 'G'), ('d', 'V'), ('v', 'V')]

注:若多维排序,则每个维度都是升序或者都是倒序,目前未发现多维排序某些维度可升序,某些维度可倒序的情况。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值