Bạn có thể sử dụng max trên từ điển python không?

Bạn đang tự hỏi làm thế nào để tìm các giá trị tối thiểu và tối đa trong từ điển Python?

Cách dễ nhất để tìm các giá trị tối thiểu hoặc tối đa trong từ điển Python là sử dụng các hàm tích hợp min[] hoặc max[] được áp dụng cho danh sách được trả về bởi phương thức value[] từ điển. Bạn cũng có thể chỉ chuyển từ điển cho các hàm max[] hoặc min[] nhưng trong trường hợp đó, bạn phải sử dụng đối số khóa tùy chọn để xác định mức tối thiểu hoặc tối đa dựa trên các giá trị từ điển chứ không phải trên các khóa

Chúng tôi sẽ xem xét nhiều cách để giải quyết vấn đề này để bạn có thể chọn cách bạn thích

Hãy bắt đầu mã hóa

Mục lục

  • Làm cách nào để bạn tìm thấy giá trị tối đa trong từ điển Python?
  • Nhận giá trị tối đa và khóa của nó từ một từ điển trong Python
  • Làm thế nào để bạn có được tất cả các khóa có giá trị cao nhất trong từ điển?
  • Cách sử dụng hàm Python Max với biểu thức Lambda
  • Sử dụng toán tử. itemgetter[] với hàm Max để lấy giá trị tối đa trong từ điển
  • Một cách khác để tìm giá trị từ điển tối đa bằng Lambda và hàm Max
  • Làm cách nào để bạn tìm thấy giá trị tối thiểu trong từ điển Python?
  • Tìm giá trị tối đa trong từ điển Python bằng từ điển “nghịch đảo”
  • Phần kết luận

Làm cách nào để bạn tìm thấy giá trị tối đa trong từ điển Python?

Giả sử rằng chúng tôi đã tạo một trò chơi và chúng tôi đang lưu trữ điểm của tất cả người chơi trong một từ điển

>>> points = {'Jake': 100, 'Andy': 450, 'Kate': 230}

Điều đầu tiên tôi có thể nghĩ đến để tính giá trị tối đa trong từ điển là sử dụng hàm tích hợp Python

Python cung cấp một hàm tích hợp có tên là max[] trả về mục lớn nhất trong một lần lặp

Ngoài ra, một trong những phương thức được cung cấp bởi từ điển Python là giá trị [] trả về danh sách tất cả các giá trị trong từ điển

>>> print[points.values]

Đầu tiên, hãy gọi phương thức values[] trên từ điển của chúng ta để xem những gì chúng ta nhận được

>>> print[points.values[]]
dict_values[[100, 450, 230]]

Sau đó thử chuyển danh sách này tới hàm max…

>>> print[max[points.values[]]]
450

Chúng tôi đã lấy lại những gì chúng tôi muốn, giá trị tối đa trong từ điển

Trong phần tiếp theo, chúng ta sẽ xem cách lấy giá trị lớn nhất trong từ điển đồng thời theo dõi khóa được ánh xạ tới giá trị đó

Nhận giá trị tối đa và khóa của nó từ một từ điển trong Python

Trong phần trước chúng ta đã thấy rằng hàm max của Python có thể được sử dụng với iterables

Từ điển Python có thể lặp lại không?

Từ điển Python có thể lặp lại vì nó có phương thức dunder được gọi là __iter__. Để xác minh tất cả các phương thức thuộc về từ điển, bạn có thể sử dụng lệnh dir[dict]

>>> dir[dict]
['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']

Đây là điều sẽ xảy ra nếu bạn chuyển từ điển điểm được xác định trong phần trước cho hàm max

>>> max[points]
'Kate'

Hàm max trả về khóa có giá trị lớn nhất trong từ điển. Trong trường hợp này, các khóa được so sánh theo thứ tự bảng chữ cái

Đây không phải là điều chúng tôi muốn vì chúng tôi muốn nhận giá trị tối đa trong từ điển chứ không phải khóa từ điển tối đa

Để có được giá trị tối đa, chúng ta phải chuyển khóa đối số tùy chọn cho hàm max. Khóa đối số được sử dụng để chỉ định hàm sắp xếp một đối số

Đây là cách tiếp cận tương tự được sử dụng với chức năng sắp xếp tích hợp

Chúng tôi vượt qua điểm. lấy làm đối số khóa để hàm max đi qua tất cả các khóa trong từ điển và nhận giá trị tối đa sau khi gọi các điểm. phương thức get[] cho mỗi khóa [phương thức này trả về giá trị được liên kết với một khóa đã cho].
>>> max[points, key=points.get]
'Andy'

Một lần nữa…

Chúng tôi đang vượt qua điểm. truy cập đối số khóa để nhận giá trị tối đa dựa trên các giá trị trong từ điển và không dựa trên các khóa

Lần này hàm max trả về khóa ‘

Andy’ vì đó là khóa liên kết với giá trị cao nhất trong từ điển [450]

Để có được giá trị thực, chúng ta chỉ cần truy xuất giá trị được ánh xạ tới khóa từ điển thu được bằng mã trước đó

>>> print[points[max[points, key=points.get]]]
450

Và nếu chúng ta muốn in cả khóa và giá trị lớn nhất, chúng ta có thể sử dụng đoạn mã sau…

________số 8

Để in tin nhắn trước đó, chúng tôi đã sử dụng phương thức định dạng chuỗi

Làm thế nào để bạn có được tất cả các khóa có giá trị cao nhất trong từ điển?

Trong các ví dụ trước chỉ có một giá trị tối đa trong từ điển

Nhưng điều gì sẽ xảy ra nếu trong từ điển trước đó, chúng ta có cùng giá trị tối đa được liên kết với các khóa khác nhau?

Ý tôi là đây…

>>> points = {'Jake': 100, 'Andy': 450, 'Kate': 450}

Trong trường hợp này, cả Andy và Kate đều có 450 điểm và khi tôi sử dụng mã được tạo ở phần trước, đây là kết quả

>>> print[points.values]
0

Chúng tôi chỉ lấy lại khóa ‘Andy’ và điều này không đúng

Làm cách nào chúng tôi có thể lấy lại một từ điển chứa cả hai khóa được liên kết với giá trị tối đa?

Chúng ta có thể bắt đầu với giá trị lớn nhất và sau đó xác định các khóa có giá trị khớp với giá trị lớn nhất

Để tạo từ điển mới này, chúng tôi sẽ sử dụng cách hiểu từ điển

Vì vậy, trước tiên hãy tính giá trị lớn nhất và lưu nó vào biến max_value

>>> print[points.values]
1

Sau đó, sử dụng khả năng hiểu từ điển để tạo từ điển mới bằng cách sử dụng các khóa khớp với giá trị tối đa

>>> print[points.values]
2

Để hiểu biểu thức hiểu ở trên, bạn phải nhớ những gì mà phương thức dictionary items[] trả về

>>> print[points.values]
3Bây giờ nó có ý nghĩa không?

Trong phần hiểu từ điển, chúng tôi đi qua từng bộ trong danh sách và chúng tôi lấy khóa và giá trị từ các bộ có giá trị khớp với giá trị lớn nhất

Cách sử dụng hàm Python Max với biểu thức Lambda

Hãy thực hiện một cách khác để lấy giá trị tối đa và khóa được liên kết với nó từ một từ điển Python

Ghi chú. với cách tiếp cận này, chúng tôi đang đưa ra giả định rằng giá trị tối đa trong từ điển của chúng tôi chỉ có thể là một

Lấy từ điển sau

>>> print[points.values]
4

Chúng tôi sẽ tính toán bộ dữ liệu tối đa trong danh sách được trả về bởi các điểm. mặt hàng[]

>>> print[points.values]
5

Đây là kết quả chúng ta nhận được bằng cách đơn giản áp dụng hàm tích hợp max cho danh sách các bộ ở trên…

>>> print[points.values]
6

Hừm…. đây không phải là điều chúng tôi muốn…

Chúng tôi đang lấy lại bộ dữ liệu này từ hàm max vì hàm này đang trả về bộ dữ liệu tối đa bằng cách sử dụng phần tử đầu tiên của bộ dữ liệu làm tiêu chí đặt hàng

Nếu bạn muốn cung cấp một thứ tự khác

tiêu chí cho hàm max[], chúng ta có thể chuyển đối số khóa tùy chọn cho phép chỉ định hàm sắp xếp một đối số

Trong trường hợp này, chức năng đặt hàng của chúng tôi sẽ là một lambda chọn phần tử thứ hai trong mỗi bộ để xác định bộ dữ liệu tối đa

Phần tử thứ hai trong một bộ đã cho đại diện cho một giá trị trong từ điển gốc

Hàm lambda chúng ta sẽ vượt qua là…

>>> print[points.values]
7

Cuộc gọi đến chức năng tối đa trở thành

>>> print[points.values]
8

Như bạn có thể thấy, chúng tôi đang lấy lại cặp khóa/giá trị chính xác từ từ điển dựa trên thực tế là 450 là giá trị tối đa

Sử dụng toán tử. itemgetter[] với hàm Max để lấy giá trị tối đa trong từ điển

Ngoài ra còn có một cách khác để viết hàm lambda mà chúng ta đã thấy ở phần trước

>>> print[points.values]
7

Hàm lambda này có thể được thay thế bởi toán tử. hàm itemgetter[], một phần của mô-đun toán tử

Bằng cách chuyển chỉ số 1 cho toán tử. itemgetter[] bạn lấy lại mục thứ hai của mỗi bộ trong các điểm. danh sách item[]

>>> print[points.values[]]
dict_values[[100, 450, 230]]
0

Như bạn có thể thấy hàm itemgetter được sử dụng làm đối số chính để xác định giá trị lớn nhất trong từ điển

Nếu bạn chỉ muốn lấy lại giá trị tối đa, bạn có thể lấy nó bằng cách truy cập chỉ mục 1 của bộ dữ liệu được trả về

>>> print[points.values[]]
dict_values[[100, 450, 230]]
1

Một cách khác để tìm giá trị từ điển tối đa bằng Lambda và hàm Max

Chúng ta hãy xem một cách khác để tìm giá trị lớn nhất trong từ điển bằng cách sử dụng hàm lambda cùng với hàm max

Trong phần trước, chúng ta đã sử dụng hàm lambda để xác định mục thứ hai tối đa trong mỗi bộ được trả về bởi các điểm. mặt hàng[]

Lần này chúng tôi sẽ làm việc trên các điểm từ điển gốc thay vì các điểm. mặt hàng[]

Chúng tôi muốn xác định hàm lambda đã cung cấp một khóa trả về giá trị được ánh xạ tới khóa đó. Sau đó, chúng ta sẽ sử dụng lambda này làm đối số khóa tùy chọn [nó sẽ được hàm max sử dụng làm hàm đặt hàng]

Hàm lambda sẽ là

>>> print[points.values[]]
dict_values[[100, 450, 230]]
2

Đưa ra từ điển sau…

>>> print[points.values]
4

Chúng ta có thể sử dụng hàm max như hình bên dưới

>>> print[points.values[]]
dict_values[[100, 450, 230]]
4

Ghi chú. giống như cách chúng ta đã thấy trong phần trước, phương pháp này không hoạt động nếu cùng một giá trị tối đa được gán cho nhiều khóa

Lưu ý 2. đối số khóa của hàm max[] không liên quan gì đến khóa từ điển. Để làm rõ điều này, tôi đã sử dụng dict_key trong hàm lambda

Xem đây như một bài tập để thực hành việc sử dụng từ điển, lambdas và hàm max

Làm cách nào để bạn tìm thấy giá trị tối thiểu trong từ điển Python?

Để tìm giá trị nhỏ nhất trong từ điển Python, bạn có thể sử dụng hàm tích hợp min[] được áp dụng cho kết quả của phương thức value[] trong từ điển.

Điều này tương tự như cách tiếp cận chúng tôi đã sử dụng trước đây để tính giá trị tối đa

Hãy sử dụng từ điển sau…

>>> points = {'Jake': 100, 'Andy': 450, 'Kate': 450}

Và đây là giá trị nhỏ nhất trong từ điển được tính bằng hàm min[]

>>> print[points.values[]]
dict_values[[100, 450, 230]]
6

Và bây giờ với khả năng hiểu từ điển và câu lệnh if, chúng ta có thể tạo một từ điển chứa tất cả các khóa khớp với giá trị tối thiểu

>>> print[points.values[]]
dict_values[[100, 450, 230]]
7

Hãy xác nhận rằng nó cũng hoạt động nếu nhiều khóa được ánh xạ tới giá trị tối thiểu

>>> print[points.values[]]
dict_values[[100, 450, 230]]
8

Nó hoạt động

Tìm giá trị tối đa trong từ điển Python bằng từ điển “nghịch đảo”

Nếu bạn nghĩ rằng chúng tôi đã trải qua đủ cách để lấy giá trị tối đa hoặc tối thiểu trong từ điển, hãy suy nghĩ kỹ 🙂

Tôi muốn cho bạn thấy một cách tiếp cận thay thế hoàn toàn khác với những cách chúng ta đã thấy cho đến nay

Bắt đầu từ từ điển sau

>>> points = {'Jake': 100, 'Andy': 450, 'Kate': 230}

Hiện nay…

Tôi muốn hoán đổi khóa và giá trị trong từ điển

Bạn sẽ thấy tại sao trong thời gian ngắn…

Định dạng của từ điển gốc là

>>> print[max[points.values[]]]
450
0

Từ điển mới sẽ là

>>> print[max[points.values[]]]
450
1

Hãy làm điều này trước và sau đó bạn sẽ thấy cách bạn có thể sử dụng từ điển mới để nhận được giá trị tối đa

Để hoán đổi khóa và giá trị trong từ điển, chúng ta có thể sử dụng cách hiểu từ điển

>>> print[max[points.values[]]]
450
2

Hãy chắc chắn rằng bạn hiểu phần hiểu này trước khi bạn tiếp tục đọc

Bây giờ, chúng ta có thể sử dụng hàm max[] với từ điển mới để lấy giá trị lớn nhất trong từ điển

>>> print[max[points.values[]]]
450
3

Điều tương tự cũng áp dụng cho hàm min[] trả về giá trị nhỏ nhất trong từ điển

>>> print[max[points.values[]]]
450
4

Phần kết luận

Chà, chúng ta đã thấy rất nhiều cách khác nhau để truy xuất các giá trị tối đa và tối thiểu từ một từ điển Python

Đây là một cơ hội tuyệt vời để xem lại các khái niệm Python như

  • Các hàm tích hợp [tối thiểu / tối đa] có và không có đối số khóa tùy chọn
  • phương pháp từ điển. mệnh lệnh. giá trị [] và dict. mặt hàng[]
  • hàm lambda
  • Hàm itemgetter của mô-đun toán tử Python
  • hiểu từ điển

Tôi hy vọng bạn đã tìm thấy bài viết này hữu ích

Và bây giờ, bạn muốn học thêm điều gì nữa?

Hãy cho tôi biết trong phần bình luận bên dưới 🙂

Bài viết liên quan

Làm cách nào để trích xuất số chẵn và số lẻ từ danh sách trong Python?

Cách làm cho Python biết nói. Một thí nghiệm thú vị

Cách vẽ bằng Python Rùa. Thể hiện sự sáng tạo của bạn

Claudio Sabato

Tôi là Trưởng nhóm công nghệ, Kỹ sư phần mềm và Huấn luyện viên lập trình. Tôi muốn giúp bạn trong hành trình trở thành Nhà phát triển siêu hạng

Max có hoạt động trên từ điển không?

Phương thức max[] trả về phần tử lớn nhất của từ điển . Ghi chú. Nếu từ điển trống, phương thức trả về nil.

Làm cách nào để lấy 10 giá trị hàng đầu trong từ điển Python?

Phương pháp #1. itemgetter[] + items[] + sorted[] . Trong phần này, chúng ta chỉ sắp xếp đảo ngược các giá trị từ điển được biểu thị bằng itemgetter[] và được truy cập bằng items[].

Điều gì không thể là một giá trị trong từ điển Python?

Đây là những thứ như số nguyên, số float, chuỗi, Booleans, hàm. Ngay cả các bộ dữ liệu cũng có thể là một khóa. Từ điển hoặc danh sách không thể là khóa . Mặt khác, các giá trị có thể là bất cứ thứ gì theo nghĩa đen và chúng có thể được sử dụng nhiều lần.

Từ điển kích thước tối đa Python là gì?

Về nguyên tắc không có giới hạn về kích thước đối với từ điển trong Python, ngoại trừ dung lượng bộ nhớ khả dụng của bạn [RAM + Dung lượng hoán đổi].

Chủ Đề