如何遍历以下条件的列表

时间:2011-07-04 05:38:58

标签: python list sorting

a = [(2,3),(4,1),(2,8),(2,1),(3,4)]

如何遍历以下条件的列表

  1. 根据从小到大的第一个元组
  2. 如果第一个元组按照相同的前两个降序排列
  3. 我可以使用Python进行排序,如下所示:

    sorted(a, key=lambda d: d[0], reverse=True)
    

    但如何使它像这样(伪代码):

    if d[0] == d[0] then sort list by d[1] reverse
    

2 个答案:

答案 0 :(得分:3)

sorted(..., key=lambda x: (x[0], -x[1]))

答案 1 :(得分:1)

伊格纳西奥的答案适用于看似OP需要的数字。如果无法将一元-应用于要反转的字段,则可以使用Reversinator

例如

class Reversinator(object):
    def __init__(self, obj):
        self.obj = obj
    def __lt__(self, other):
        return other.obj < self.obj

a = [(2,'3'),(4,'1'),(2,'8'),(2,'1'),(3,'4')]

print sorted(a, key=lambda x: (x[0], Reversinator(x[1])))