Các công cụ cá nhân
Bạn đang ở: Trang chủ Diễn đàn Ngôn ngữ Hỏi về stable của lệnh sort
Hỏi về stable của lệnh sort
Discussion Icon bởi Anh Quan vào lúc 12/04/2008 03:38

Mình đang học Python. Mình không hiểu rõ cách dùng stable của sort trong Python. Mình muốn sort cai list sau theo giam dan va nhung phan tu nao giong nhau thi sau khi sort phai sap xep thu tu giong nhu list goc. Nhưng mình có đọc trong "Library Reference" thi chỉ biết dùng lệnh này thôi <tên list mới> = sorted(<tên list cũ>, reverse = True). Mong các bác giúp em cái.

Ví dụ:

list_a = [['b'], ['d'], [5], [4, 'hai'], ['e'], [4, 'mot']]

sau khi sort theo dieu kien tren thi list trả vế phải như vậy:

list_a = [['e'], ['d'], ['b'], [5], [4, 'hai'], [4, 'mot']]

Discussion Icon bởi vithon vào lúc 13/04/2008 03:13

list_a = [['b'], ['d'], [5], [4, 'hai'], ['e'], [4, 'mot']]
list_a.sort()
print list_a

Theo như tài liệu thì chỉ từ 2.3 trở lên thì phương thức "sort" của một đối tượng danh sách mới đảm bảo tính stable của danh sách đó.

Theo như ví dụ của bạn thì sẽ không có kiểu sort nào giúp được vì [4, 'hai'] so sánh nhỏ hơn [4, 'mot'] nên không hiểu sao nó lại nằm trước trong khi sort từ lớn đến bé.

Discussion Icon bởi Phạm Thị Minh Hoài vào lúc 16/06/2008 15:25

Hi, Bạn thử dùng cách này xem

list_a = [['b'], ['d'], [5], [4, 'hai'], ['e'], [4, 'mot']]

d = {}
for x in list_a:
d[x[0]] = len(x) > 1 and d.setdefault(x[0], []) + [[x[0], x[1]]] or [x[0]]

li = d.keys()
li.sort()
li.reverse()
li = [d[x] for x in li]
print li

-------------
Hoaiptm
nmduzng@hotmail.com

Số bài mỗi trang

Vận hành bởi Hệ quản trị nội dung mã nguồn mở Plone

Trang này tuân theo các chuẩn sau: