Giả sử tôi có một từ điển trong đó các khóa ánh xạ tới các số nguyên như:
d = {'key1': 1,'key2': 14,'key3': 47}
Có cách nào cú pháp tối giản để trả lại tổng của các giá trị trong d
-ie 62
trong trường hợp này?
Giả sử tôi có một từ điển trong đó các khóa ánh xạ tới các số nguyên như:
d = {'key1': 1,'key2': 14,'key3': 47}
Có cách nào cú pháp tối giản để trả lại tổng của các giá trị trong d
-ie 62
trong trường hợp này?
Câu trả lời:
Như bạn mong đợi:
sum(d.values())
Python 2.7.12
cũng hoạt động tốt vớisum(d.values())
d.values()
.
Trong Python 2, bạn có thể tránh tạo 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 itervalues()
phương thức từ điển, trả về một trình lặp của các khóa của từ điển:
sum(d.itervalues())
Trong Python 3, bạn chỉ có thể sử dụng d.values()
vì phương thức đó đã được thay đổi để làm điều đó (và itervalues()
đã bị xóa do không còn cần thiết nữa).
Để dễ dàng viết mã độc lập phiên bản luôn lặp lại các giá trị của khóa từ điển, một hàm 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))
Đây thực chất là những gì six
mô-đun của Benjamin Peterson làm.
d = {'key1': 1,'key2': 14,'key3': 47}
sum1 = sum(d[item] for item in d)
print(sum1)
bạn có thể làm điều đó bằng cách sử dụng vòng lặp for
Tôi cảm thấy sum(d.values())
là cách hiệu quả nhất để có được số tiền.
Bạn cũng có thể thử hàm giảm để tính tổng cùng với biểu thức lambda:
reduce(lambda x,y:x+y,d.values())
sum (d.values ()) - "d" -> Từ điển của bạn Biến
câu trả lời của phihag (và những câu tương tự) sẽ không hoạt động trong python3.
Đối với trăn 3:
d = {'key1': 1,'key2': 14,'key3': 47}
sum(list(d.values()))
Cập nhật! Có những phàn nàn rằng nó không hoạt động! Tôi chỉ đính kèm một ảnh chụp màn hình từ thiết bị đầu cuối của tôi. Có thể là một số không phù hợp trong các phiên bản, vv
Bạn có thể xem xét 'cho vòng lặp' cho việc này:
d = {'data': 100, 'data2': 200, 'data3': 500}
total = 0
for i in d.values():
total += i
tổng = 800
sum(d.values())
, kể từ khi .values()
trả về a List
.
Bạn có thể lấy một trình tạo tất cả các giá trị trong từ điển, sau đó bỏ nó vào danh sách và sử dụng hàm sum () để lấy tổng của tất cả các giá trị.
Thí dụ:
c={"a":123,"b":4,"d":4,"c":-1001,"x":2002,"y":1001}
sum(list(c.values()))
sum
bản thân theo cáchreduce
-reduce
là một hình thức tổng quát hơn (ví dụsum
,min
vàmax
tất cả có thể được viết dưới dạngreduce
) và có thể giải quyết các vấn đề khác (ví dụproduct
) một cách dễ dàng.