Python-按多个属性对列表进行排序?

发布于 2021-02-02 23:20:39

我有一个清单清单:

[[12, 'tall', 'blue', 1],
[2, 'short', 'red', 9],
[4, 'tall', 'blue', 13]]

如果要按一个元素(例如,高/短元素)排序,可以通过进行s = sorted(s, key = itemgetter(1))

如果我想作为排序依据两个高大/ short和颜色,我可以为每个元素做排序两次,一次,但有一个更快的方法?

关注者
0
被浏览
188
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    键可以是返回元组的函数:

    s = sorted(s, key = lambda x: (x[1], x[2]))
    

    或者,你可以使用来实现相同的效果itemgetter(速度更快,并且避免了Python函数调用):

    import operator
    s = sorted(s, key = operator.itemgetter(1, 2))
    

    并请注意,你可以在此处使用sort而不是使用sorted,然后重新分配:

    s.sort(key = operator.itemgetter(1, 2))
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看