Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Sắp Xếp Dictionary Theo Giá Trị Trong Python

Dictionary (từ điển) là cấu trúc dữ liệu không có thứ tự. Chúng sử dụng cấu trúc ánh xạ để lưu trữ dữ liệu. Dictionary ánh xạ khóa (key) với giá trị (value), tạo thành các cặp giữ dữ liệu liên quan.

Sử dụng phương thức sorted() của Python, bạn có thể sắp xếp nội dung của một dictionary theo giá trị. Ví dụ, để xếp hạng độ phổ biến của các món trên thực đơn cà phê, bạn có thể dùng phương thức sorted() của Python. Hướng dẫn này sẽ thảo luận về cách phương thức sorted() hoạt động và cách bạn có thể dùng nó để sắp xếp nội dung của một dictionary.

Ôn Tập Về Python sorted()

Hàm tích hợp sorted() của Python có thể dùng để sắp xếp các đối tượng lặp được (iterable), như danh sách (list), bộ (tuple) và dictionary. Hàm sorted() sắp xếp các mục của đối tượng lặp được chỉ định và tạo một đối tượng mới với các giá trị vừa được sắp xếp.

Cú pháp cho phương thức sorted():

sorted(object, key, reverse)

Phương thức nhận ba tham số:

  • object: đối tượng lặp được bạn muốn sắp xếp (bắt buộc)
  • key: hàm cho phép thực hiện các phép sắp xếp tùy chỉnh (tùy chọn)
  • reverse: chỉ định đối tượng có được sắp xếp theo thứ tự giảm dần hay không (tùy chọn)

Như bạn thấy, object là tham số bắt buộc duy nhất. Nếu bạn quyết định không dùng tham số tùy chọn key và reverse, Python sẽ tự động sắp xếp đối tượng theo thứ tự tăng dần.

Lưu ý: Career Karma đã viết hướng dẫn đầy đủ về phương thức sort() và sorted() trong Python. Nếu bạn muốn tìm hiểu thêm về phương thức này và tham số key, hãy xem hướng dẫn Python sort() của chúng tôi.

Hãy đi qua một ví dụ nhanh để minh họa cách phương thức sorted() hoạt động.

Giả sử chúng ta đang điều hành một quán cà phê và muốn lấy danh sách khách hàng Coffee Club (thân thiết) theo thứ tự bảng chữ cái. Chúng ta đã có danh sách khách hàng, nhưng nó được sắp xếp theo ngày đăng ký. Chúng ta có thể dùng mã sau để sắp xếp danh sách:

customers = ['Kaley Fernandez', 'Darius Rowland', 'Isaac Borthwick', 'Alexandria Kidd']
sorted_customers = sorted(customers)
print(sorted_customers)

Mã của chúng ta sắp xếp mảng customers và trả về:

['Alexandria Kidd', 'Darius Rowland', 'Isaac Borthwick', 'Kaley Fernandez']

Trong dòng đầu tiên, chúng ta khai báo danh sách lưu tên khách hàng; danh sách này gọi là: customers. Sau đó, chúng ta dùng phương thức sorted() để sắp xếp danh sách tên khách hàng theo thứ tự tăng dần; danh sách mới này gọi là: sorted_customers. Cuối cùng, chúng ta in danh sách vừa sắp xếp ra bảng điều khiển bằng hàm print().

Sắp Xếp Dictionary Theo Giá Trị

Giả sử bạn có một dictionary và muốn sắp xếp nó theo cặp khóa-giá trị. Bạn có thể làm điều này bằng cách dùng hai hàm cùng nhau: items() và sorted().

Hàm items() cho phép bạn lấy các mục trong dictionary. Chúng ta có thể dùng hàm này kết hợp với hàm sorted() và tham số key tùy chỉnh để sắp xếp dictionary theo giá trị. Xem xét hai ví dụ sau.

Ví Dụ 1: Sắp Xếp Giảm Dần

Quay lại quán cà phê. Giả sử chúng ta có một dictionary lưu các món trên thực đơn cà phê cũng như số lượng mỗi món được đặt trong tháng trước. Chúng ta muốn xem món cà phê nào phổ biến nhất tháng trước, nên quyết định sắp xếp dictionary đơn hàng theo thứ tự giảm dần của giá trị.

Dưới đây là chương trình để sắp xếp nội dung dictionary theo giá trị:

orders = {
    'cappuccino': 54,
    'latte': 56,
    'espresso': 72,
    'americano': 48,
    'cortado': 41
}
sort_orders = sorted(orders.items(), key=lambda x: x[1], reverse=True)
for i in sort_orders:
    print(i[0], i[1])

Mã của chúng ta trả về:

espresso 72
latte 56
cappuccino 54
americano 48
cortado 41

Có nhiều thứ diễn ra trong mã của chúng ta, hãy phân tích nó.

Ở đầu mã, chúng ta định nghĩa một dictionary gọi là orders lưu tên cà phê làm khóa và số lượng bán làm giá trị.

Sau đó, chúng ta dùng phương thức sorted() để sắp xếp dictionary orders theo giá trị. Dưới đây là phân tích cách chúng ta dùng phương thức sorted():

Tham số Giá trị Mô tả
object orders.items() Tham chiếu đến tất cả giá trị trong dictionary "orders". Nếu chỉ dùng "orders", chúng ta phải tham chiếu vị trí chỉ mục của mục để lấy giá trị riêng lẻ. Khi dùng orders.items(), một danh sách lặp được với các mục trong danh sách được tạo.
key key=lambda x: x[1] Một cơ chế sắp xếp cho phép sắp xếp dictionary theo giá trị. Đây là ví dụ về hàm Lambda, là hàm không tên.
reverse reverse=True Chỉ định muốn dữ liệu được sắp xếp theo thứ tự giảm dần.

Cuối cùng, chúng ta tạo một vòng lặp for lặp qua mỗi mục được tạo trong phương thức sort_order và in ra cả tên khóa và giá trị của nó, được sắp xếp theo thứ tự chúng ta chỉ định trong hàm sort_order.

Ví Dụ 2: Sắp Xếp Tăng Dần

Tương tự, nếu chúng ta muốn tìm ra đồ uống ít phổ biến nhất ở quán cà phê, chúng ta có thể dùng cùng mã như trên nhưng bỏ tham số reverse=True. Dưới đây là mã ví dụ:

orders = {
    'cappuccino': 54,
    'latte': 56,
    'espresso': 72,
    'americano': 48,
    'cortado': 41
}
sort_orders = sorted(orders.items(), key=lambda x: x[1])
for i in sort_orders:
    print(i[0], i[1])

Khi chạy mã, các giá trị sau được trả về:

cortado 41
americano 48
cappuccino 54
latte 56
espresso 72

Như bạn thấy, mã của chúng ta trả về danh sách các món được sắp xếp theo thứ tự tăng dần, dựa trên số lượng mỗi món được đặt trong tháng trước.

List Comprehension (Danh Sách Tự Tạo)

Ngoài ra, chúng ta có thể dùng list comprehension để sắp xếp nội dung dictionary theo giá trị. List comprehension là kỹ thuật ngắn gọn để tạo danh sách trong Python và có thể tiết kiệm không gian nếu bạn tạo các phương thức sắp xếp phức tạp hơn.

Dưới đây là mã để sắp xếp đơn hàng cà phê theo thứ tự tăng dần theo số lượng mỗi cà phê được đặt bằng list comprehension:

orders = {
    'cappuccino': 54,
    'latte': 56,
    'espresso': 72,
    'americano': 48,
    'cortado': 41
}
[print(key, value) for (key, value) in sorted(orders.items(), key=lambda x: x[1])]

Khi chạy mã, phản hồi sau được trả về:

cortado 41
americano 48
cappuccino 54
latte 56
espresso 72

Kết quả của mã chúng ta giống với ví dụ trên nơi chúng ta sắp xếp nội dung danh sách orders theo thứ tự tăng dần. Nhưng thay vì định nghĩa biến sort_orders và tạo vòng lặp for riêng để lặp qua danh sách đã sắp xếp, chúng ta tạo danh sách bằng kỹ thuật list comprehension.

List comprehension chúng ta tạo ở trên sắp xếp qua mỗi mục trong danh sách theo thứ tự tăng dần, sau đó in khóa và giá trị của từng mục dictionary ra bảng điều khiển.

Kết Luận

Khi làm việc với dictionary trong Python, sắp xếp dictionary theo giá trị là thao tác phổ biến. Phương thức sorted() cho phép bạn sắp xếp tập dữ liệu dựa trên nhu cầu của mình.

Hướng dẫn này đã thảo luận, cung cấp ví dụ, về cách dùng phương thức sorted() để sắp xếp dictionary theo giá trị trong Python, bao gồm cách dùng tham số key và reverse.

Bây giờ bạn đã sẵn sàng bắt đầu sắp xếp dictionary theo giá trị như một chuyên gia Python!