Hãy nói rằng tôi có một danh sách như dưới đây:Sắp xếp một danh sách lồng nhau bởi hai yếu tố
[['Harry', '4'], ['Anthony', '10'], ['Adam', '7'], ['Joe', '6'], ['Ben', '10']]
# we can say the first element in it's lists is `name`, the second is `score`
Tôi muốn sắp xếp nó để:
[['Anthony', '10'], ['Ben', '10'], ['Adam', '7'], ['Joe', '6'], ['Harry', '4']]
loại Vì vậy, đầu tiên nó theo thứ tự giảm dần theo điểm số và sau đó sắp xếp nó theo thứ tự tăng dần theo tên.
Tôi đã thử:
>>> sorted(l, key=lambda x: (int(x[1]), x[0]))
[['Harry', '4'], ['Joe', '6'], ['Adam', '7'], ['Anthony', '10'], ['Ben', '10']]
Đó là làm việc, vì vậy bây giờ tôi chỉ cần đảo ngược nó:
>>> sorted(l, key=lambda x: (int(x[1]), x[0]), reverse=True)
[['Ben', '10'], ['Anthony', '10'], ['Adam', '7'], ['Joe', '6'], ['Harry', '4']]
Ah, reverse=True
chỉ đơn giản là đảo ngược danh sách nhưng không cung cấp cho các mong đợi đầu ra. Vì vậy, tôi chỉ muốn đảo ngược đầu ra của int(x[1])
, nhưng không phải là x[0]
.
Tôi có thể làm như thế nào?