Trong Python, từ điển là một cấu trúc béo không có thứ tự theo mặc định. Vì vậy, đôi khi, bạn sẽ muốn sắp xếp từ điển theo khóa hoặc giá trị để thực hiện truy vấn dễ dàng hơn
Vấn đề là việc sắp xếp một từ điển theo giá trị không bao giờ là một việc đơn giản. Đó là bởi vì Python không có phương thức sẵn có để làm điều đó
Tuy nhiên, tôi đã tìm ra cách sắp xếp từ điển theo giá trị và đó là điều tôi sẽ chỉ cho bạn cách thực hiện trong bài viết này
Những gì chúng tôi sẽ bao gồm
Cách sắp xếp dữ liệu bằng phương pháp numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
0
numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
Phương thức
numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
0 sắp xếp dữ liệu có thể lặp lại như danh sách, bộ dữ liệu và từ điển. Nhưng nó chỉ sắp xếp theo khóaPhương thức
numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
0 đặt các mục được sắp xếp trong một danh sách. Đó là một vấn đề khác mà chúng tôi phải giải quyết, bởi vì chúng tôi muốn từ điển được sắp xếp vẫn là từ điểnChẳng hạn,
numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
0 đã sắp xếp danh sách dưới đây theo thứ tự bảng chữ cáipersons = ['Chris', 'Amber', 'David', 'El-dorado', 'Brad', 'Folake']
sortedPersons = sorted[persons]
print[sortedPersons]
# Output: ['Amber', 'Brad', 'Chris', 'David', 'El-dorado', 'Folake']
Và phương thức
numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
0 sắp xếp các số trong bộ bên dưới theo thứ tự tăng dầnnumbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
Nếu bạn sử dụng phương thức
numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
0 với từ điển, chỉ các khóa sẽ được trả về và như thường lệ, nó sẽ nằm trong danh sách________số 8Đây không phải là hành vi bạn muốn. Bạn muốn từ điển được sắp xếp theo giá trị và vẫn là từ điển. Đó là những gì tôi sẽ chỉ cho bạn tiếp theo
Phương pháp numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
0 hoạt động như thế nào
numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
Để sắp xếp một từ điển, chúng ta vẫn sẽ sử dụng chức năng đã sắp xếp, nhưng theo một cách phức tạp hơn. Đừng lo lắng, tôi sẽ giải thích mọi thứ bạn cần biết
Vì chúng ta vẫn sẽ sử dụng phương pháp
numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
0, nên đã đến lúc giải thích chi tiết về phương pháp numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
0Các tham số của Phương thức numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
0
numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
Phương thức
numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
0 có thể chấp nhận tối đa 3 tham sốiterable – dữ liệu để lặp lại. Nó có thể là một bộ dữ liệu, danh sách hoặc từ điển
key – một giá trị tùy chọn, chức năng giúp bạn thực hiện thao tác sắp xếp tùy chỉnh
đảo ngược - một giá trị tùy chọn khác. Nó giúp bạn sắp xếp dữ liệu đã được sắp xếp theo thứ tự tăng dần hoặc giảm dần
Nếu bạn đoán đúng, tham số chính là những gì chúng ta sẽ chuyển vào phương thức
numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
0 để từ điển được sắp xếp theo giá trịBây giờ, đã đến lúc sắp xếp từ điển của chúng ta theo giá trị và đảm bảo rằng nó vẫn là một từ điển
Cách sắp xếp từ điển bằng phương pháp numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
0
numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
Để sắp xếp chính xác từ điển theo giá trị bằng phương thức
numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
0, bạn sẽ phải thực hiện như sau- chuyển từ điển sang phương thức
0 làm giá trị đầu tiênnumbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12] sortedNumbers = sorted[numbers] print[sortedNumbers] # Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
- sử dụng phương pháp
9 trên từ điển để truy xuất các khóa và giá trị của nómy_dict = { 'num6': 6, 'num3': 3, 'num2': 2, 'num4': 4, 'num1': 1, 'num5': 5} sortedDict = sorted[my_dict] print[sortedDict] # ['num1', 'num2', 'num3', 'num4', 'num5', 'num6']
- viết hàm lambda để lấy các giá trị được truy xuất bằng phương thức
90numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12] sortedNumbers = sorted[numbers] print[sortedNumbers] # Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
Đây là một ví dụ
numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
9Như tôi đã nói trước đó, chúng ta phải lấy các giá trị đó của từ điển để có thể sắp xếp từ điển theo giá trị. Đó là lý do tại sao bạn có thể thấy 1 trong hàm lambda
1 đại diện cho các chỉ số của các giá trị. Các phím là 0. Hãy nhớ rằng một lập trình viên bắt đầu đếm từ 0, không phải 1
Với đoạn mã trên, tôi nhận được kết quả bên dưới
numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
1Đây là mã đầy đủ để bạn không bị nhầm lẫn
numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
2Bạn có thể thấy từ điển đã được sắp xếp theo các giá trị theo thứ tự tăng dần. Bạn cũng có thể sắp xếp theo thứ tự giảm dần. Nhưng chúng tôi sẽ xem xét điều đó sau vì chúng tôi vẫn gặp sự cố với kết quả mà chúng tôi nhận được
Vấn đề là từ điển không còn là từ điển nữa. Các khóa và giá trị riêng lẻ được đặt trong một bộ và tiếp tục được cô đọng thành một danh sách. Hãy nhớ rằng bất cứ điều gì bạn nhận được do kết quả của phương pháp
numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
0 đều được đưa vào danh sáchChúng tôi đã có thể sắp xếp các mục trong từ điển theo giá trị. Những gì còn lại là chuyển đổi nó trở lại từ điển
Cách chuyển đổi danh sách kết quả thành từ điển
Để chuyển đổi danh sách kết quả thành từ điển, bạn không cần phải viết một hàm phức tạp khác hoặc một vòng lặp. Bạn chỉ cần chuyển biến lưu danh sách kết quả vào phương thức
numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
92numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
5Hãy nhớ rằng chúng ta đã lưu từ điển đã sắp xếp trong biến có tên là
numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
93, vì vậy đây là biến mà chúng ta phải chuyển đến numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
92Mã đầy đủ trông như thế này
numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
8Đó là nó. Chúng tôi đã có thể sắp xếp các mục trong từ điển và chuyển đổi chúng trở lại từ điển. Chúng tôi vừa ăn bánh và cũng ăn nó
Cách sắp xếp từ điển theo giá trị theo thứ tự tăng dần hoặc giảm dần
Hãy nhớ rằng phương thức
numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
0 chấp nhận giá trị thứ ba có tên là numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
96numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
96 với giá trị là numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
98 sẽ sắp xếp từ điển đã sắp xếp theo thứ tự giảm dầnnumbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
3Bạn có thể thấy đầu ra bị đảo ngược vì chúng tôi đã chuyển
numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
99 sang phương thức numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
0Nếu bạn hoàn toàn không đặt
numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
96 hoặc bạn đặt giá trị của nó thành false, từ điển sẽ được sắp xếp theo thứ tự tăng dần. Đó là mặc địnhPhần kết luận
Xin chúc mừng. Giờ đây, bạn có thể sắp xếp từ điển theo giá trị mặc dù không có phương thức hoặc hàm tích hợp sẵn để sử dụng trong Python
Tuy nhiên, có một điều khiến tôi tò mò khi chuẩn bị viết bài này. Hãy nhớ rằng chúng ta có thể sử dụng trực tiếp
numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
0 trên từ điển. Kết quả là chúng tôi có một danh sách, mặc dù chúng tôi chỉ nhận được khóa chứ không phải giá trịĐiều gì sẽ xảy ra nếu chúng ta chuyển đổi danh sách đó thành từ điển bằng phương pháp
numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
92? numbers = [14, 3, 1, 4, 2, 9, 8, 10, 13, 12]
sortedNumbers = sorted[numbers]
print[sortedNumbers]
# Output: [1, 2, 3, 4, 8, 9, 10, 12, 13, 14]
9Chúng tôi gặp lỗi. Đó là bởi vì nếu bạn muốn tạo một từ điển từ một danh sách, bạn phải sử dụng khả năng hiểu từ điển. Và nếu bạn sử dụng khả năng hiểu từ điển cho loại dữ liệu này, bạn phải chỉ định một giá trị cho tất cả các mục nhập. Điều đó sẽ thách thức mục đích sắp xếp từ điển theo giá trị, vì vậy đó không phải là điều chúng tôi muốn
Nếu bạn muốn tìm hiểu thêm về cách hiểu từ điển, bạn nên đọc bài viết này
Cảm ơn bạn đã đọc
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
Nhà phát triển web và nhà văn kỹ thuật tập trung vào các công nghệ giao diện người dùng
Nếu bạn đọc đến đây, hãy tweet cho tác giả để cho họ thấy bạn quan tâm. Tweet một lời cảm ơn
Học cách viết mã miễn phí. Chương trình giảng dạy nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có việc làm với tư cách là nhà phát triển. Bắt đầu