Sắp xếp bằng hai phím python
Trong Python, sắp xếp danh sách từ điển bằng phương thức 9 hoặc hàm 0 sẽ gây ra lỗi 1 theo mặc định Show
Bằng cách chỉ định tham số 2 của 9 hoặc 0, bạn có thể sắp xếp danh sách từ điển theo giá trị của khóa cụ thểBài viết này mô tả các nội dung sau
Các mã mẫu sau đây sử dụng danh sách từ điển có khóa chung. Mô-đun pprint được sử dụng để làm cho đầu ra dễ đọc hơn
nguồn. Liên kết được tài trợ Sắp xếp danh sách từ điển sẽ gây ra lỗi theo mặc địnhSắp xếp danh sách từ điển (_______12_______0) bằng phương pháp 9 hoặc hàm 0 sẽ gây ra lỗi 1 theo mặc địnhĐiều này là do từ điển không hỗ trợ so sánh với 4, 5, v.v.
nguồn. Chỉ định biểu thức lambda cho tham số pprint.pprint(sorted(l, key=lambda x: x['Age'])) # [{'Age': 20, 'Name': 'Bob'}, # {'Age': 30, 'Name': 'Charlie', 'Point': 70}, # {'Age': 40, 'Name': 'Alice', 'Point': 80}] pprint.pprint(sorted(l, key=lambda x: x['Name'])) # [{'Age': 40, 'Name': 'Alice', 'Point': 80}, # {'Age': 20, 'Name': 'Bob'}, # {'Age': 30, 'Name': 'Charlie', 'Point': 70}] 2Để sắp xếp danh sách từ điển theo giá trị của khóa cụ thể, hãy chỉ định tham số 2 của phương thức 9 hoặc hàm 0Bằng cách chỉ định một chức năng được áp dụng cho từng thành phần của danh sách, nó được sắp xếp theo kết quả của chức năng đó. Xem bài viết sau để biết thêm thông tin
Trong ví dụ này, bạn có thể chỉ định một hàm để lấy giá trị của một khóa cụ thể từ từ điển Bạn có thể định nghĩa một hàm với 0, nhưng sẽ thuận tiện hơn khi sử dụng các biểu thức lambda trong trường hợp như vậy
nguồn. Chỉ định sắp xếp theo thứ tự giảm dần hay tăng dần với tham số 1
nguồn. Các ví dụ cho đến nay sử dụng 0, nhưng bạn có thể chỉ định 2 và 1 theo cách tương tự với phương pháp 9 của 6Để biết sự khác biệt giữa 9 và 0, hãy xem bài viết sau. 9 tự sắp xếp đối tượng ban đầu và 0 tạo một đối tượng được sắp xếp mới
Khi khóa được chỉ định không tồn tạiVới cách hiển thị ở trên, sẽ xảy ra lỗi nếu khóa được chỉ định không tồn tại
nguồn. Trong trường hợp như vậy, hãy sử dụng phương thức 1 của 0, phương thức này trả về giá trị mặc định cho các khóa không tồn tại
Theo mặc định, 1 trả về 4 cho các khóa không tồn tại. 4 không thể so sánh với một số hoặc một chuỗi, vì vậy sẽ xảy ra lỗi
nguồn. Bạn có thể chỉ định một giá trị cho khóa không tồn tại làm đối số thứ hai của 1. Các phần tử có khóa không tồn tại được thay thế bằng giá trị được chỉ định trong đối số thứ hai và được sắp xếp
nguồn. Vô cực 7 được xác định là lớn hơn bất kỳ số nào khác, vì vậy bạn có thể sử dụng 7 và 9 để luôn đặt các phần tử không có khóa ở cuối hoặc đầu
nguồn. Chỉ định pprint.pprint(sorted(l, key=lambda x: x['Age'])) # [{'Age': 20, 'Name': 'Bob'}, # {'Age': 30, 'Name': 'Charlie', 'Point': 70}, # {'Age': 40, 'Name': 'Alice', 'Point': 80}] pprint.pprint(sorted(l, key=lambda x: x['Name'])) # [{'Age': 40, 'Name': 'Alice', 'Point': 80}, # {'Age': 20, 'Name': 'Bob'}, # {'Age': 30, 'Name': 'Charlie', 'Point': 70}] 6 cho thông số pprint.pprint(sorted(l, key=lambda x: x['Age'])) # [{'Age': 20, 'Name': 'Bob'}, # {'Age': 30, 'Name': 'Charlie', 'Point': 70}, # {'Age': 40, 'Name': 'Alice', 'Point': 80}] pprint.pprint(sorted(l, key=lambda x: x['Name'])) # [{'Age': 40, 'Name': 'Alice', 'Point': 80}, # {'Age': 20, 'Name': 'Bob'}, # {'Age': 30, 'Name': 'Charlie', 'Point': 70}] 2Bạn cũng có thể sử dụng 2 của mô-đun toán tử của thư viện tiêu chuẩn. Nó nhanh hơn sử dụng biểu thức lambda
nguồn. Nếu khóa được chỉ định không tồn tại, sẽ xảy ra lỗi
nguồn. Liên kết được tài trợ Sắp xếp theo nhiều phímSau đây là một ví dụ về trường hợp các từ điển có cùng giá trị cho một khóa chung. Hai từ điển có giá trị 3 cho khóa 4 0nguồn. Nếu các giá trị bằng nhau, thứ tự ban đầu được giữ nguyên 1nguồn. Bạn có thể chỉ định nhiều đối số cho 6 và nếu các giá trị cho khóa đầu tiên bằng nhau, chúng sẽ được so sánh và sắp xếp theo giá trị của khóa tiếp theo 2nguồn. Lưu ý rằng nếu thứ tự của các đối số khác nhau, kết quả cũng khác nhau 3nguồn. Điều tương tự cũng có thể được thực hiện với các biểu thức lambda trả về nhiều giá trị dưới dạng bộ dữ liệu hoặc danh sách 4nguồn. pprint.pprint(sorted(l, key=lambda x: x['Age'])) # [{'Age': 20, 'Name': 'Bob'}, # {'Age': 30, 'Name': 'Charlie', 'Point': 70}, # {'Age': 40, 'Name': 'Alice', 'Point': 80}] pprint.pprint(sorted(l, key=lambda x: x['Name'])) # [{'Age': 40, 'Name': 'Alice', 'Point': 80}, # {'Age': 20, 'Name': 'Bob'}, # {'Age': 30, 'Name': 'Charlie', 'Point': 70}] 8, pprint.pprint(sorted(l, key=lambda x: x['Age'])) # [{'Age': 20, 'Name': 'Bob'}, # {'Age': 30, 'Name': 'Charlie', 'Point': 70}, # {'Age': 40, 'Name': 'Alice', 'Point': 80}] pprint.pprint(sorted(l, key=lambda x: x['Name'])) # [{'Age': 40, 'Name': 'Alice', 'Point': 80}, # {'Age': 20, 'Name': 'Bob'}, # {'Age': 30, 'Name': 'Charlie', 'Point': 70}] 9 để biết danh sách từ điểnNhư đã đề cập ở trên, so sánh với 4 hoặc 5 không được hỗ trợ cho từ điển 0, vì vậy việc chuyển danh sách từ điển tới 8 hoặc 9 sẽ gây ra lỗi 5nguồn. Như với 0 và 9, bạn cũng có thể chỉ định tham số 2 trong 8 và 9
Khóa hoạt động như thế nào trong Python được sắp xếp?Để sắp xếp tùy chỉnh phức tạp hơn, sorted() nhận một "key=" tùy chọn chỉ định hàm "key" biến đổi từng phần tử trước khi so sánh. The key function takes in 1 value and returns 1 value, and the returned "proxy" value is used for the comparisons within the sort.
Sự khác biệt giữa hàm sort() và sorted() giải thích bằng ví dụ là gì?sort() về cơ bản hoạt động với chính danh sách đó. Nó sửa đổi danh sách ban đầu tại chỗ. Giá trị trả về là Không có. sorted() hoạt động trên bất kỳ lần lặp nào có thể bao gồm danh sách, từ điển, v.v. .
Làm cách nào để sử dụng bộ so sánh trong Python?Bạn cũng có thể sử dụng sorted() với một bộ so sánh tùy chỉnh làm tham số của nó. Trong Python 2, sorted() có thể được triển khai bằng một bộ so sánh tùy chỉnh, cmp hoặc tham số chính. . Nếu nó trả về một số dương. x > y Nếu nó trả về 0. x == y Nếu nó trả về một số âm. x < y |