Dùng sorted() với key là lambda tính tổng độ dài chuỗi của từng phần tử trong tuple (sau khi convert sang string).
Ví dụ
my_list = [(11, 23, 45, 678), (34, 67), (653,), (78, 99, 23, 45), (67, 43)]
print("Danh sách:", my_list)
result = sorted(my_list, key=lambda tup: sum(len(str(e)) for e in tup))
print("Sau khi sắp xếp:", result)
Kết quả
Danh sách: [(11, 23, 45, 678), (34, 67), (653,), (78, 99, 23, 45), (67, 43)] Sau khi sắp xếp: [(653,), (34, 67), (67, 43), (78, 99, 23, 45), (11, 23, 45, 678)]
Giải thích
- Lambda:
sum(len(str(e)) for e in tup)tính tổng số chữ số của tuple. sortedsắp xếp tăng dần theo key này.- Tuple có ít chữ số nhất (653 -> 3 chữ số) lên đầu.