Trong Python 2 bạn có thể tránh làm cho một bản sao tạm thời của tất cả các giá trị bằng cách sử dụng phương pháp itervalues()
từ điển, mà trả về một iterator phím của từ điển:
sum(d.itervalues())
Trong Python 3 bạn có thể chỉ sử dụng d.values()
vì phương pháp đó đã được thay đổi để làm điều đó (và itervalues()
đã bị xóa vì không còn cần thiết nữa).
Để làm cho nó dễ dàng hơn để viết phiên bản mã độc lập mà luôn luôn lặp trên các giá trị của phím của từ điển, một chức năng tiện ích có thể hữu ích:
import sys
def itervalues(d):
return iter(getattr(d, ('itervalues', 'values')[sys.version_info[0]>2])())
sum(itervalues(d))
này về cơ bản những gì mô-đun six
Benjamin Peterson làm là.
Chỉ để cho vui: tự thực hiện 'sum' cho mình về mặt [' reduce'] (http://docs.python.org/library/functions.html) - 'reduce' là dạng tổng quát hơn (ví dụ:' sum', 'min' và' max' có thể được viết dưới dạng 'reduce') và có thể giải quyết các vấn đề khác (ví dụ' product') một cách dễ dàng. –
Điều gì về Guido nói - Tôi nghĩ tôi nhớ điều này một cách chính xác - mà giảm đi là đi? Tôi đi với bạn. Tại sao xóa nó khỏi ngôn ngữ? – octopusgrabbus