最新消息:

[Python]当列表list元素为tuple或是dict时的排序问题

IT技术 ipcpu 1367浏览 0评论

零、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)

转载请注明:IPCPU-网络之路 » [Python]当列表list元素为tuple或是dict时的排序问题

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址