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?
python
dictionary
hash
sum
nedblorf
sumber
sumber
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.Jawaban:
Seperti yang Anda harapkan:
sumber
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:Dalam Python 3 Anda bisa menggunakan
d.values()
karena metode itu diubah untuk melakukan itu (danitervalues()
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:
Ini pada dasarnya adalah apa yang
six
modul Benjamin Peterson lakukan.sumber
Tentu ada. Berikut adalah cara untuk menjumlahkan nilai-nilai kamus.
sumber
Anda dapat melakukannya menggunakan for loop
sumber
Saya merasa
sum(d.values())
adalah cara paling efisien untuk mendapatkan jumlah.Anda juga dapat mencoba fungsi pengurangan untuk menghitung jumlah beserta ekspresi lambda:
sumber
sum (d.values ()) - "d" -> Variabel kamus Anda
sumber
Jawaban phihag (dan yang serupa) tidak akan berfungsi di python3.
Untuk python 3:
Memperbarui! Ada keluhan bahwa itu tidak berhasil! Saya hanya melampirkan tangkapan layar dari terminal saya. Mungkin ada beberapa ketidakcocokan dalam versi dll.
sumber
Anda dapat mempertimbangkan 'for loop' untuk ini:
total = 800
sumber
sum(d.values())
, karena.values()
mengembalikan aList
.Anda bisa mendapatkan generator dari semua nilai dalam kamus, lalu melemparkannya ke daftar dan menggunakan fungsi sum () untuk mendapatkan jumlah semua nilai.
Contoh:
sumber