在开发项目的过程中,我遇到了一个难题,就是从前端传递过来的数据,一般传递过来的是数据的唯一标识,比如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’]