2011-03-08 34 views

Trả lời

23

Từ điển "a" là cấu trúc lặp lại trong python. Khi bạn lặp qua với for x in a, bạn đang lặp qua các phím trong từ điển.

Trong dòng thứ hai, hàm tối đa có hai đối số: Một đối tượng có thể lặp lại (a) và một hàm "khóa" tùy chọn. Chức năng Key sẽ được sử dụng để đánh giá giá trị của các mục trong một - lớn nhất trong số đó sẽ được trả về.

Ví dụ:

>>> a = dict(((1,3),(0,-1),(3,21))) 
>>> for x in a: 
...  print x #output the value of each item in our iteration 
... 
0 
1 
3 

Lưu ý ở đây rằng chỉ có "chìa khóa" là đầu ra. Khi chúng tôi chuyển từng khóa này để "nhận" ...

>>> a.get(0) 
-1 
>>> a.get(1) 
3 
>>> a.get(3) 
21 

Chúng tôi nhận được giá trị cho mỗi khóa. Bây giờ hãy xem cách hoạt động của tối đa.

>>> b=[2, 3, 5, 6, 4] 
>>> max(b) 
6 
>>> def inverse(x): 
...  return 1.0/x 
... 
>>> max(b, key=inverse) 
2 

Như bạn thấy, tối đa (theo mặc định) sẽ chỉ tìm số lớn nhất trong danh sách có thể lặp lại của chúng tôi. Nếu chúng ta định nghĩa hàm "nghịch đảo", nó sẽ trả về khoản mục lớn nhất trong b, trong đó inverse(item) là lớn nhất.

Kết hợp hai mục này và chúng tôi thấy rằng max(a, key=a.get) sẽ trả về item trong a có giá trị là a.get(item) là lớn nhất. tức là khóa tương ứng với giá trị lớn nhất.

+0

Nếu bạn thực sự quan tâm, bạn cũng có thể thử sử dụng hàm lambda: 'max (a, key = lambda x: a [x])' – ProdigySim

1

Bạn có hỏi tham số key hoạt động không? Phải mất một cuộc gọi, được áp dụng cho mọi phần tử trong từ điển. Trong trường hợp của từ điển của bạn, nó chỉ đơn giản thực hiện điều này:

a.get(1) # 3 
a.get(0) # -1 
a.get(3) # 21 

max sau đó sử dụng kết quả của các chức năng quan trọng như giá trị so sánh, vì vậy nó rõ ràng sẽ chọn các yếu tố mà trả về giá trị cao nhất, tức là 3.

Các vấn đề liên quan