Computer >> Máy Tính >  >> Lập trình >> Python

Sắp xếp từ điển theo giá trị trong Python

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. Từ điển ánh xạ các khóa với các giá trị, tạo các cặp chứa dữ liệu liên quan.

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

Trình làm mới Python đã sắp xếp ()

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

Đây là cú pháp cho sorted() phương pháp:

sorted(object, key, reverse)

Phương thức này có ba tham số:

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

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

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

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

81% người tham gia cho biết họ cảm thấy tự tin hơn về triển vọng công việc công nghệ của mình sau khi tham gia một cuộc thi đào tạo. Kết hợp với bootcamp ngay hôm nay.

Sinh viên tốt nghiệp bootcamp trung bình dành ít hơn sáu tháng để chuyển đổi nghề nghiệp, từ khi bắt đầu bootcamp đến khi tìm được công việc đầu tiên của họ.

Giả sử rằng chúng tôi đang điều hành một cửa hàng cà phê và chúng tôi muốn truy xuất danh sách theo thứ tự bảng chữ cái của Coffee Club của chúng tôi (lòng trung thành) khách hàng. Chúng tôi đã có danh sách khách hàng, nhưng nó sẽ được đặt hàng trước ngày đăng ký. Chúng tôi có thể sử dụng mã sau để sắp xếp danh sách của mình:

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

sorted_customers = sorted(customers)

print(sorted_customers)

Mã của chúng tôi sắp xếp các customers mảng và trả về như sau:

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

Trên dòng đầu tiên của mã, chúng tôi khai báo danh sách lưu trữ tên khách hàng của chúng tôi; danh sách này được gọi là:khách hàng. Sau đó, chúng tôi sử dụng sorted() phương pháp 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 được gọi là:sorted_customers . Cuối cùng, chúng tôi in danh sách mới được sắp xếp ra bảng điều khiển bằng cách sử dụng print() chức năng.

Sắp xếp từ điển theo giá trị

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

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

Ví dụ 1:Sắp xếp theo thứ tự giảm dần

Hãy quay lại quán cà phê. Giả sử chúng ta có một từ điển lưu trữ các món trong thực đơn cà phê của chúng ta cũng như số lượng từng món đã được đặt trong tháng trước. Chúng tôi muốn xem loại cà phê phổ biến nhất vào tháng trước, vì vậy chúng tôi quyết định sắp xếp từ điển thứ tự theo thứ tự giá trị giảm dần.

Đây là chương trình chúng tôi có thể sử dụng để sắp xếp nội dung từ điển của mình 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 tôi trả về như sau:

espresso 72
latte 56
cappuccino 54
americano 48
cortado 41

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

Khi bắt đầu mã của chúng tôi, chúng tôi xác định một từ điển có tên là orders lưu trữ tên của cà phê dưới dạng chìa khóa và số lượng đã bán dưới dạng giá trị .

Sau đó, chúng tôi sử dụng sorted() phương pháp sắp xếp orders từ điển theo giá trị. Dưới đây là bảng phân tích về cách chúng tôi sử dụng sorted() phương pháp:

Tham số Văn bản Mô tả
đối tượng order.items () Đề cập đến tất cả các giá trị trong từ điển "đơn hàng" của chúng tôi. Nếu chúng ta chỉ sử dụng "đơn đặt hàng", chúng ta sẽ phải tham chiếu vị trí chỉ mục của mặt hàng để nhận được giá trị riêng của nó. Trong khi nếu chúng ta sử dụng order.items (), một danh sách có thể lặp lại với các mục trong danh sách sẽ được tạo.
key key =lambda x:x [1] Một cơ chế sắp xếp điều đó cho phép chúng tôi sắp xếp từ điển của mình theo giá trị. Đây là một ví dụ về hàm Lambda, là một hàm không có tên.
ngược lại reverse =True Các quốc gia mà chúng tôi muốn dữ liệu của mình được sắp xếp theo thứ tự giảm dần.

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

Ví dụ 2:Sắp xếp theo thứ tự tăng dần

Tương tự, nếu chúng ta muốn tìm đồ uống ít phổ biến nhất được bán tại quán cà phê của mình, chúng ta có thể sử dụng mã tương tự như trên nhưng không có reverse=True tham số. Dưới đây là một ví dụ về mã cho điều này:

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úng tôi chạy mã của mình, các giá trị sau được trả về:

cortado 41
americano 48
cappuccino 54
latte 56
espresso 72

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

Hiểu danh sách

Ngoài ra, chúng ta có thể sử dụng khả năng hiểu danh sách để sắp xếp nội dung từ điển theo giá trị. Hiểu danh sách là một kỹ thuật ngắn gọn để tạo danh sách bằng Python và có thể tiết kiệm dung lượng nếu bạn đang tạo các phương pháp sắp xếp phức tạp hơn.

Đây là mã chúng tôi sẽ sử dụng để sắp xếp các đơn đặt hàng cà phê của mình theo thứ tự tăng dần theo số lượng của mỗi loại cà phê đã được đặt hàng bằng cách sử dụng tính năng hiểu danh sách:

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úng tôi chạy mã của mình, phản hồi sau được trả về:

cortado 41
americano 48
cappuccino 54
latte 56
espresso 72

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

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

Kết luận

Khi bạn đang làm việc với từ điển bằng Python, sắp xếp từ điển theo giá trị là một thao tác phổ biến. sorted() cho phép bạn sắp xếp một tập hợp dữ liệu dựa trên nhu cầu của bạn.

Hướng dẫn này đã thảo luận, cung cấp các ví dụ, cách sử dụng sorted() phương pháp sắp xếp từ điển theo giá trị trong Python, bao gồm cách sử dụng khóa keyreverse thông số.

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