Tôi cố gắng để sắp xếp một danh sách các hàng như thế này:Sắp xếp các cấp trong Python
[('Pineapple', 1), ('Orange', 3), ('Banana', 1), ('Apple', 1), ('Cherry', 2)]
Danh sách được sắp xếp nên là:
[('Orange', 3), ('Cherry', 2), ('Apple', 1), ('Banana', 1), ('Pineapple', 1)]
Vì vậy, ở đây 1 danh sách sẽ được sắp xếp dựa trên tuple[1]
theo thứ tự giảm dần, sau đó nếu giá trị tuple
(tuple[1]
) khớp với Apple
, Banana
& Pineapple
- danh sách phải được sắp xếp thêm dựa trên tuple[0]
trong ascendi ng trật tự.
Tôi đã thử các thể ways-
top_n.sort(key = operator.itemgetter(1, 0), reverse = True)
# Output: [(Orange, 3), (Cherry, 2), (Pineapple, 1), (Banana, 1), (Apple, 1)]
như "reverse = True"
, dứa, sau đó Banana, ...
Cuối cùng tôi đã phải đưa ra một giải pháp:
top_n.sort(key = operator.itemgetter(0), reverse = False)
top_n.sort(key = operator.itemgetter(1), reverse = True)
Có cách nào tốt hơn để có được giải pháp như cách tiếp cận thứ nhất của tôi không. Tôi đang cố gắng khám phá thêm về Python, do đó tìm kiếm loại giải pháp như vậy.
Thực tế bạn có thể chỉ cần làm: 'top_n.sort(); top_n.sort (key = itemgetter (1), reverse = True) '. Bởi vì 'reverse = False' là mặc định. Cũng sử dụng 'itemgetter (0)' không thực sự có ý nghĩa quá nhiều vì các chuỗi đã được sắp xếp bởi phần tử đầu tiên trước tiên, do đó bạn có thể đơn giản tránh sử dụng 'khóa'. – Bakuriu
@Bakuriu: Yeah! Thật. Cám ơn vì sự gợi ý. –