Theo kinh nghiệm, có vẻ như trình sắp xếp danh sách mặc định của Python, khi chuyển qua danh sách các bộ dữ liệu, sẽ sắp xếp theo phần tử đầu tiên trong mỗi bộ dữ liệu. Đúng không? Nếu không, cách đúng đắn để sắp xếp danh sách các bộ dữ liệu bằng các phần tử đầu tiên của chúng là gì?Python sắp xếp danh sách các bộ dữ liệu như thế nào?
Trả lời
Tự động sắp xếp danh sách các bộ dữ liệu theo các phần tử đầu tiên trong bộ dữ liệu, sau đó là các phần tử thứ hai và bộ tuple ([1,2,3]) sẽ xuất hiện trước tuple ([1,2,4]) . Nếu bạn muốn ghi đè hành vi này, hãy chuyển một cuộc gọi có thể gọi làm đối số thứ hai cho phương thức sắp xếp. Số điện thoại này phải trả về 1, -1, 0.
Không sử dụng đối số cmp nếu đối số khóa cần sắp xếp sẽ thực hiện! Đó là thích foo.sort (key = lambda x: x [1]) để foo.sort (lambda x, y: cmp (x [1], y [1])). Nó dễ hiểu hơn và hiệu quả hơn nhiều. – cthulahoops
@cthulahoops Tôi nghĩ rằng việc sử dụng 'operator.itemgetter' trong trường hợp đó tốt hơn hàm lambda:' foo.sort (key = operator.itemgetter (1)) 'đẹp hơn' foo.sort (key = lambda x: x [1]) '. Đó chỉ là ý kiến của tôi. –
Thật tuyệt khi có liên kết phù hợp với tài liệu. – gaazkam
Có, đây là mặc định. Trên thực tế, đây là cơ sở của thành ngữ "DSU" (trang trí-sắp xếp-Undecorate) cổ điển trong Python. Xem Code Like a Pythonista.
Không, bộ dữ liệu là sequence types giống như chuỗi. Chúng được sắp xếp giống nhau, bằng cách so sánh từng phần tử theo thứ tự:
>>> import random
>>> sorted([(0,0,0,int(random.getrandbits(4))) for x in xrange(10)])
[(0, 0, 0, 0), (0, 0, 0, 4), (0, 0, 0, 5), (0, 0, 0, 7), (0, 0, 0, 8),
(0, 0, 0, 9), (0, 0, 0, 12), (0, 0, 0, 12), (0, 0, 0, 12), (0, 0, 0, 14)]
Ba số 0 chỉ ở đó để chỉ ra rằng một yếu tố nào đó không phải là yếu tố đầu tiên phải được kiểm tra.
Hm. Tôi dường như là thiểu số ... Tôi không hiểu kết quả thử nghiệm của mình, nếu Python sắp xếp bằng cách chỉ xem xét phần tử đầu tiên trong mỗi bộ dữ liệu. – unwind
Bắt đầu với mục đầu tiên, nhưng sau đó chuyển sang. Xem câu trả lời của Vasil. –
Hãy thử sử dụng phương pháp sắp xếp danh sách nội bộ và chuyển một lambda. Nếu phần tử đầu tiên của bạn là một số nguyên, thì nó sẽ hoạt động.
# l is the list of tuples
l.sort(lambda x,y: x-y)
Bạn có thể sử dụng bất kỳ callable cho so sánh chức năng, không nhất thiết là một lambda. Tuy nhiên nó cần trả về -1 (nhỏ hơn), 0 (bằng) hoặc 1 (lớn hơn).
-1: Làm thế nào điều này sẽ làm việc với một danh sách các bộ dữ liệu? Tôi nhận được TypeError: loại toán hạng không được hỗ trợ (s) cho -: 'tuple' và 'tuple' –
Hàm lambda sẽ được thực hiện trong sắp xếp phải có một đối số, là phần tử iteratables của một tupla serie: pairs.sort (cặp key = lambda: pair [1]). pairs.sort (cặp khóa = lambda: pair [1]) hoặc pairs.sort (key = lambda pair: pair [1], pair [0]) nếu bạn muốn có một lớp thứ tự thứ hai sau khi đặt hàng bởi phần tử đầu tiên . – Alex
Check-out "Devin Jeanpierre" câu trả lời cho câu hỏi này sort-a-dictionary-in-python-by-the-value nơi ông nói sử dụng một tuple và cho thấy làm thế nào để sắp xếp theo giá trị thứ hai
- 1. Python: sắp xếp danh sách phụ thuộc
- 2. Sắp xếp danh sách các bộ dữ liệu không có phân biệt chữ hoa chữ thường
- 3. Sắp xếp danh sách các bộ dữ liệu xem xét địa phương (đặt hàng Thụy Điển)
- 4. Sắp xếp các bộ dữ liệu trong F #
- 5. Liệu python có một danh sách được sắp xếp?
- 6. sắp xếp một danh sách các bản ghi trong Python
- 7. Python cách sắp xếp danh sách này?
- 8. Sắp xếp một từ điển các bộ dữ liệu bằng Python
- 9. Cách sắp xếp danh sách các chuỗi?
- 10. Danh sách sắp xếp cấu trúc dữ liệu Python theo thứ tự bảng chữ cái
- 11. Python - Sắp xếp các yếu tố trong danh sách các danh sách
- 12. Cách sắp xếp/sắp xếp dữ liệu trong Riak?
- 13. Sắp xếp một danh sách bằng Python sử dụng kết quả từ sắp xếp một danh sách
- 14. Cách tạo danh sách các bộ dữ liệu C++
- 15. Python - sắp xếp một danh sách liệt kê lồng nhau
- 16. Merge danh sách được sắp xếp trong python
- 17. chuyển danh sách các bộ dữ liệu thành nhiều danh sách trong Python
- 18. Sắp xếp lại một danh sách lệnh
- 19. Sắp xếp danh sách các từ điển trong khi hợp nhất các bản sao trong Python?
- 20. Sắp xếp một danh sách từ một danh sách ID
- 21. Danh sách Python các bộ dữ liệu vào danh sách int
- 22. Làm thế nào để sắp xếp một bộ sưu tập danh sách các lớp với các thuộc tính trong chúng?
- 23. Danh sách sắp xếp Knockout.js
- 24. Làm thế nào để sắp xếp danh sách IEnumerable?
- 25. Cách sắp xếp danh sách bằng số?
- 26. Sắp xếp danh sách Python theo thứ tự giảm dần
- 27. Mysql: Sắp xếp theo như thế nào?
- 28. Danh sách sắp xếp dựa trên danh sách khác
- 29. Python: sắp xếp một từ điển của danh sách
- 30. Cách sắp xếp danh sách này bằng Python?
Bạn có thực sự chạy mã ví dụ? Nếu vậy, bạn đã thấy gì? Vui lòng gửi mã mẫu của bạn. –