python中sort、sorted的用法

在开发项目的过程中,我遇到了一个难题,就是从前端传递过来的数据,一般传递过来的是数据的唯一标识,比如id等等,而不会直接传递name等属性,因为根据这些属性来查询数据库的时候,有可能会造成数据不准确,而我需要的就是将从前端传递过来的id排序,然后再根据id查出来别的属性,来组成json存放到别的表的字段中,在这个过程中,由于前端传递过来的id列表里面的id是字符串类型的数字,排序的时候遇到知识盲区,所以记录一下。
1. sort和sorted的区别(sort是直接改此列表,而sorted是直接返回一个新的列表,都有一个参数reverse,如reverse为True则为从大到小排序,默认为false,从小到大排序)

sort:
d = [3,24,54,22]
d.sort(reverse=True)
print(d)
结果:
[54, 24, 22, 3]
sorted:
c = [11,33,22,2]
nowc = sorted(c,reverse=True)
print(nowc)
结果:
[33, 22, 11, 2]

但是要注意,如果列表里面的数字不是整数,而是字符串形式的数字,则只会根据字符串的第一个数字来排序,所以排序里面还有一个参数key:

sort:
import re
a = [“1”,“51”,“42”,“213”,“3”]
a.sort(key=lambda i:int(re.match(r"(\d+)",i).group()))
print(a)
结果:
[‘1’, ‘3’, ‘42’, ‘51’, ‘213’]
sorted:
b = [“22”,“44”,“2a”,“3”,“7”,“17v”]
nowb = sorted(b,key=lambda i :int(re.match(r"(\d+)",i).group()))
print(nowb)
结果:
[‘2a’, ‘3’, ‘7’, ‘17v’, ‘22’, ‘44’]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值