2012-09-13 27 views
8

Cho từ điển d trong đó cặp giá trị khóa bao gồm chuỗi là khóa và số nguyên làm giá trị, tôi muốn in chuỗi khóa có giá trị lớn nhất .In khóa giá trị lớn nhất trong từ điển theo cách pythonic

Tất nhiên tôi có thể lặp lại trên d.items(), lưu trữ tối đa và khóa của nó và đầu ra sau sau vòng lặp for. Nhưng lại có một nhiều hơn "pythonic" cách chỉ sử dụng chỉ là một chức năng max xây dựng như

print max(...) 
+0

Tùy thuộc vào việc bạn sử dụng dict có lẽ bạn muốn chuyển đổi khóa và giá trị, có số nguyên có khóa một chuỗi có giá trị ... (Tất nhiên bạn có thể làm điều này nếu bạn không bao giờ sử dụng khóa chuỗi ...) –

+3

Phím và giá trị swappping là * không * một ý tưởng hay, bởi vì các giá trị có thể không phải là duy nhất ... – halloleo

Trả lời

16
print max(d.keys(), key=lambda x: d[x]) 

hoặc thậm chí ngắn hơn (từ bình luận):

print max(d, key=d.get) 
+6

làm thế nào về 'max (d, key = d.get)' – georg

+0

Cả hai dường như hoạt động! :-) Cảm ơn cho điều này: Tôi nghi ngờ rằng python có thể cung cấp một cách súc tích để đối phó với vấn đề này! - Liên quan đến cả hai giải pháp, phiên bản thứ hai nhìn tôi dễ nhớ hơn. Liệu nó có bất kỳ cảnh báo nào trước cái đầu tiên không? – halloleo

+0

@halloleo Tôi không nghĩ vậy. 'keys()' chỉ là thừa, 'get' là một phương thức mà hành vi của nó chỉ khác với' lambda' cho các mục không có trong dict, điều này sẽ không xảy ra trong trường hợp này. –

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