Katakanlah saya memiliki kamus tempat kunci memetakan seperti:
d = {'key1': 1,'key2': 14,'key3': 47}
Apakah ada cara minimalistik sintaksis untuk mengembalikan jumlah nilai dalam d
—yaitu 62
dalam kasus ini?
Katakanlah saya memiliki kamus tempat kunci memetakan seperti:
d = {'key1': 1,'key2': 14,'key3': 47}
Apakah ada cara minimalistik sintaksis untuk mengembalikan jumlah nilai dalam d
—yaitu 62
dalam kasus ini?
Jawaban:
Seperti yang Anda harapkan:
sum(d.values())
Python 2.7.12
juga bekerja dengan baik dengansum(d.values())
d.values()
.
Dalam Python 2 Anda dapat menghindari membuat salinan sementara dari semua nilai dengan menggunakan itervalues()
metode kamus, yang mengembalikan iterator dari kunci kamus:
sum(d.itervalues())
Dalam Python 3 Anda bisa menggunakan d.values()
karena metode itu diubah untuk melakukan itu (dan itervalues()
dihapus karena tidak lagi diperlukan).
Untuk membuatnya lebih mudah untuk menulis kode independen versi yang selalu berulang di atas nilai-nilai kunci kamus, fungsi utilitas dapat membantu:
import sys
def itervalues(d):
return iter(getattr(d, ('itervalues', 'values')[sys.version_info[0]>2])())
sum(itervalues(d))
Ini pada dasarnya adalah apa yang six
modul Benjamin Peterson lakukan.
d = {'key1': 1,'key2': 14,'key3': 47}
sum1 = sum(d[item] for item in d)
print(sum1)
Anda dapat melakukannya menggunakan for loop
Saya merasa sum(d.values())
adalah cara paling efisien untuk mendapatkan jumlah.
Anda juga dapat mencoba fungsi pengurangan untuk menghitung jumlah beserta ekspresi lambda:
reduce(lambda x,y:x+y,d.values())
sum (d.values ()) - "d" -> Variabel kamus Anda
Jawaban phihag (dan yang serupa) tidak akan berfungsi di python3.
Untuk python 3:
d = {'key1': 1,'key2': 14,'key3': 47}
sum(list(d.values()))
Memperbarui! Ada keluhan bahwa itu tidak berhasil! Saya hanya melampirkan tangkapan layar dari terminal saya. Mungkin ada beberapa ketidakcocokan dalam versi dll.
Anda dapat mempertimbangkan 'for loop' untuk ini:
d = {'data': 100, 'data2': 200, 'data3': 500}
total = 0
for i in d.values():
total += i
total = 800
sum(d.values())
, karena .values()
mengembalikan a List
.
Anda bisa mendapatkan generator dari semua nilai dalam kamus, lalu melemparkannya ke daftar dan menggunakan fungsi sum () untuk mendapatkan jumlah semua nilai.
Contoh:
c={"a":123,"b":4,"d":4,"c":-1001,"x":2002,"y":1001}
sum(list(c.values()))
sum
diri Anda dalam halreduce
-reduce
adalah bentuk yang lebih umum (mis.sum
,min
Danmax
semuanya dapat ditulis dalam bentukreduce
) dan dapat memecahkan masalah lain (misalnyaproduct
) dengan mudah.