Giới thiệu
Khi cần sắp xếp các chuỗi dựa trên độ chênh lệch giữa số lượng chữ hoa và chữ thường, ta định nghĩa một hàm tính độ chênh lệch tuyệt đối, sau đó dùng làm key cho sort().
Ví dụ minh họa
def get_diff(my_string):
lower_count = len([ele for ele in my_string if ele.islower()])
upper_count = len([ele for ele in my_string if ele.isupper()])
return abs(lower_count - upper_count)
my_list = ["Abc", "Python", "best", "hello", "coders"]
print("Danh sách ban đầu:")
print(my_list)
my_list.sort(key=get_diff)
print("Chuỗi đã sắp xếp theo độ chênh lệch case:")
print(my_list)
Kết quả đầu ra
Danh sách ban đầu: ['Abc', 'Python', 'best', 'hello', 'coders'] Chuỗi đã sắp xếp theo độ chênh lệch case: ['Abc', 'Python', 'best', 'coders', 'hello']
Giải thích
- Hàm
get_diffđếm số chữ thường và chữ hoa bằng list comprehension +islower()/isupper(). - Trả về giá trị tuyệt đối của hiệu hai số đếm.
- Dùng
list.sort(key=get_diff)để sắp xếp theo key đó. - Chuỗi có độ chênh lệch nhỏ hơn sẽ đứng trước.