有一个有两个有价值域的类。我想按照以下标准对这些对的列表进行排序:
很容易只用第一个域进行排序:lambda:
list.sort(key=lambda x:x.first)
或
sorted(list, key=lambda x:x.first)
但如果我想进一步比较x.second,我该如何编写lambda函数?
答案 0 :(得分:1)
将它们映射到tuple
s!
sorted(list, key=lambda x:(x.first, x.second))
元组比较以您想要的相同方式发生 - 比较两个元组的第一个元素,如果它们相同,则继续并根据第二个元素的比较确定结果。
PS1:我假设可以比较x.first
和x.second
。 (类型,如整数/字符串,或定义__eq__
的对象。
PS2:我建议在__lt__(..)
课程上实施x
。这样你就不必传递lambda
来进行排序调用。