今天群里有个哥们提了一个问题,当时我也是脑子空空的 不知道怎么做,时间长不用就会忘 没办法回过头看看python列表排序吧
问:
>>> a[['aa', 34], ['bb', 45], ['cc', 12], ['dd', 234]]怎么排序能生成这样的[['dd', 234],['bb', 45],['aa', 34],['cc', 12]]
答: 首先创建一个列表 列表由元组组成 像这样 [(‘aa’, 34), (‘bb’, 45), (‘cc’, 12), (‘dd’, 234)]
b = []for i in range(len(a)): b.append(tuple(a[i]))>>>b[('aa', 34), ('bb', 45), ('cc', 12), ('dd', 234)]
方法一:# 然后使用sorted来进行排序 使用元组的第1个元素来排序
>>> sorted(b,key=lambda tup:tup[1])[('cc', 12), ('aa', 34), ('bb', 45), ('dd', 234)] >>> sorted(b,key=lambda tup:tup[1],reverse=1) // 使用reverse来进行逆序排列[('dd', 234), ('bb', 45), ('aa', 34), ('cc', 12)]
方法二:(使用itemgetter方法可以减少代码量 语法也比较清晰)
from operator import itemgetter>>> sorted(b,key=itemgetter(1)) // 对元组的第一个元素进行排列[('cc', 12), ('aa', 34), ('bb', 45), ('dd', 234)] >>> sorted(b,key=itemgetter(1),reverse=1) // 反向排序[('dd', 234), ('bb', 45), ('aa', 34), ('cc', 12)]
原文地址:python 模块学习 — operator.itemgetter, 感谢原作者分享。 第一个青春是上帝给的;第二个的青春是*自己努力的