Chúng ta có thể sử dụng phương pháp sau để thực hiện các thao tác nêu trên trong danh sách từ điển này trong một lớp lót với sự trợ giúp của hàm lambda
1. Sắp xếpChúng ta có thể sử dụng phương thức sorted[] để sắp xếp danh sách từ điển. Phương thức sắp xếp lấy iterable làm một trong các đối số, một đối số chính mà chúng ta có thể chỉ định dựa trên cách sắp xếp nên là gì, và cuối cùng là một đối số ngược lại nhận giá trị boolean
cú pháp
sorted[list, key=condition, reverse=True]
Chúng ta có thể sử dụng hàm lambda để lấy một khóa cụ thể từ từ điển. Hàm lambda có thể trông như thế này
lambda x: x['age']
Điều này sẽ thực hiện một lần lặp và kiểm tra giá trị của 'tuổi' trong mỗi lần lặp để việc sắp xếp có thể được thực hiện dựa trên giá trị đó
Ví dụ hoàn chỉnh trông như thế này
sắp xếp danh sách từ điển theo thứ tự tăng dần
sắp xếp danh sách từ điển theo thứ tự tăng dần
Đầu ra của đoạn mã trên là,
[{'name': 'A', 'age': 3}, {'name': 'C', 'age': 9}, {'name': 'B', 'age': 12}, {'name': 'D', 'age': 15}]
Chúng ta cũng có thể sắp xếp ngược lại điều này bằng cách cung cấp một đối số bổ sung có tên là đảo ngược nhận giá trị boolean. Chỉ định reverse=True sẽ sắp xếp danh sách từ điển theo thứ tự giảm dần
sắp xếp danh sách từ điển theo thứ tự giảm dần
sắp xếp danh sách từ điển theo thứ tự giảm dần
Đầu ra của danh sách đảo ngược là,
[{'name': 'D', 'age': 15}, {'name': 'B', 'age': 12}, {'name': 'C', 'age': 9}, {'name': 'A', 'age': 3}]2.
2. tối đaTìm phần tử có giá trị tối đa dựa trên khóa-giá trị cũng có thể đạt được trong một lớp lót bằng phương thức max[]. Phương thức max cũng tương tự như phương thức sắp xếp về các đối số được truyền cho hàm
cú pháp
max[iterable, key=lambda_function]
Đoạn mã hoàn chỉnh sẽ trông như thế này
lấy đối tượng tối đa từ từ điển dựa trên khóa-giá trị
lấy đối tượng tối đa từ từ điển dựa trên khóa-giá trị
Đầu ra của đoạn mã trên là,
{'name': 'D', 'age': 15}
name D, age 15
3. tối thiểuTương tự, chúng ta cũng có thể tìm giá trị nhỏ nhất từ danh sách từ điển dựa trên khóa-giá trị. Chúng tôi sẽ sử dụng phương thức min[] cho mục đích này. Nó nhận các đối số giống như phương thức max[]
cú pháp
min[iterable, key=lambda_function]
Mã hoàn chỉnh sẽ trông như thế này
lấy đối tượng tối thiểu từ từ điển dựa trên khóa-giá trị
lấy đối tượng tối thiểu từ từ điển dựa trên khóa-giá trị
Đầu ra của đoạn mã trên là,
{'name': 'A', 'age': 3}
name A, age 3
. Kết luậnĐây là những cách hiệu quả nhất để thực hiện các thao tác sắp xếp, tối đa và tối thiểu đối với danh sách từ điển. Chúng hiệu quả và một dòng. Không có vòng lặp for là bất kỳ thứ gì như vậy. Nhiệm vụ chỉ đạt được với sự trợ giúp của các phương thức tích hợp. Hy vọng bài viết này hữu ích
Sắp xếp tăng dần vs. giảm dần. Chỉ định danh sách cho nhiều thứ tự sắp xếp. Nếu đây là một danh sách các bool, phải khớp với độ dài của by
tại chỗ bool, mặc định SaiNếu Đúng, thực hiện thao tác tại chỗ
loại {‘sắp xếp nhanh’, ‘sắp xếp lại’, ‘sắp xếp theo khối’, ‘stable’}, mặc định là ‘sắp xếp nhanh’Lựa chọn thuật toán sắp xếp. Xem thêm
lambda x: x['age']
7 để biết thêm thông tin. sáp nhập và ổn định là các thuật toán ổn định duy nhất. Đối với DataFrames, tùy chọn này chỉ được áp dụng khi sắp xếp trên một cột hoặc nhãnna_position {'đầu tiên', 'cuối cùng'}, mặc định là 'cuối cùng'Đặt NaN ở đầu nếu đầu tiên;
ignore_index bool, mặc định SaiNếu True, trục kết quả sẽ được gắn nhãn 0, 1, …, n - 1
Mới trong phiên bản 1. 0. 0
key có thể gọi được, tùy chọnÁp dụng hàm chính cho các giá trị trước khi sắp xếp. Điều này tương tự như đối số key trong hàm
lambda x: x['age']
8 dựng sẵn, với điểm khác biệt đáng chú ý là hàm key này phải được vector hóa. Nó sẽ mong đợi một lambda x: x['age']
9 và trả về một Sê-ri có cùng hình dạng với đầu vào. Nó sẽ được áp dụng cho từng cột một cách độc lậpMới trong phiên bản 1. 1. 0
ReturnsDataFrame hoặc Không cóDataFrame với các giá trị được sắp xếp hoặc Không có nếu
>>> df.sort_values[by=['col1']] col1 col2 col3 col4 0 A 2 0 a 1 A 1 1 B 2 B 9 9 c 5 C 4 3 F 4 D 7 2 e 3 NaN 8 4 D0
Xem thêm
>>> df.sort_values[by=['col1']] col1 col2 col3 col4 0 A 2 0 a 1 A 1 1 B 2 B 9 9 c 5 C 4 3 F 4 D 7 2 e 3 NaN 8 4 D1
Sắp xếp DataFrame theo chỉ mục
>>> df.sort_values[by=['col1']] col1 col2 col3 col4 0 A 2 0 a 1 A 1 1 B 2 B 9 9 c 5 C 4 3 F 4 D 7 2 e 3 NaN 8 4 D2
Phương pháp tương tự cho một Series
ví dụ
lambda x: x['age']
1Sắp xếp theo col1
________số 8
Sắp xếp theo nhiều cột
lambda x: x['age']
3Sắp xếp giảm dần
lambda x: x['age']
4Đặt NA lên hàng đầu
lambda x: x['age']
5Sắp xếp với một chức năng quan trọng
lambda x: x['age']
6Sắp xếp tự nhiên với đối số chính, sử dụng gói natsort