零、list排序
在Python中我们有两种对list列表排序的方法
list.sort(key=..., reverse=...)
sorted(list, key=..., reverse=...)
两种方法略有区别,第一种没有任何返回值,并且直接修改了list的内容(包括内存中的存储内容,id没有变化),第二种没有修改list本身而是直接返回排序后的list列表。
# vowels list
vowels = ['e', 'a', 'uu', 'o', 'i']
print(sorted(vowels, key=len))
这里面reverse很好理解,就是升序和降序,但是key不是很好理解,官方给出的例子是len,来根据字符串长度排序,其实最关键的key可以设置成lambda,就是下面我们用的方法。
一、当list元素为tuple时
lst = [('d', 2), ('a', 4), ('b', 3), ('c', 2)]
# 按照value排序
lst.sort(key=lambda k: k[1])
print(lst)
# 按照key排序
lst.sort(key=lambda k: k[0])
print(lst)
# 先按value排序再按key排序
lst.sort(key=lambda k: (k[1], k[0]))
print(lst)
二、当list元素为是list时
这种情况和上面是一模一样的,就不再讨论了
三、当list元素为dict时
方法也是一样的,此时,k[]不能写数字了,dict不认数字
list=[{"name": "GET类型请求次数", "value": 2609.35}, {"name": "CDN回源流出流量", "value": 1649.45}]
#根据value排序,倒序
list.sort(key=lambda k: k['value'], reverse=True)
print(list)
#根据name排序
list.sort(key=lambda k: k['name'])
print(list)