Diyelim ki anahtarlar gibi tamsayılara eşlenen bir sözlük var:
d = {'key1': 1,'key2': 14,'key3': 47}
Değerlerin toplamını döndürmek için bir sözdizimsel minimalist yolu var mı d
; yani 62
bu durumda?
Diyelim ki anahtarlar gibi tamsayılara eşlenen bir sözlük var:
d = {'key1': 1,'key2': 14,'key3': 47}
Değerlerin toplamını döndürmek için bir sözdizimsel minimalist yolu var mı d
; yani 62
bu durumda?
Yanıtlar:
Beklediğiniz gibi:
sum(d.values())
Python 2.7.12
aynı zamanda iyi çalışıyorsum(d.values())
d.values()
.
Python 2'de itervalues()
, sözlük anahtarlarının yinelemesini döndüren sözlük yöntemini kullanarak tüm değerlerin geçici bir kopyasını yapmaktan kaçınabilirsiniz :
sum(d.itervalues())
Python 3'te kullanabilirsiniz, d.values()
çünkü bu yöntem bunu yapmak için değiştirildi (ve itervalues()
artık gerekli olmadığından kaldırıldı).
Sözlüğün anahtarlarının değerleri üzerinde her zaman yinelenen sürüm bağımsız kod yazmayı kolaylaştırmak için, bir yardımcı program işlevi yardımcı olabilir:
import sys
def itervalues(d):
return iter(getattr(d, ('itervalues', 'values')[sys.version_info[0]>2])())
sum(itervalues(d))
Bu aslında Benjamin Peterson'in six
modülünün yaptığı şey.
d = {'key1': 1,'key2': 14,'key3': 47}
sum1 = sum(d[item] for item in d)
print(sum1)
for döngüsünü kullanarak yapabilirsiniz
Ben hissediyorum sum(d.values())
toplamını almak için en etkili yoldur.
Toplamı lambda ifadesiyle birlikte hesaplamak için azaltma işlevini de deneyebilirsiniz:
reduce(lambda x,y:x+y,d.values())
sum (d.values ()) - "d" -> Sözlüğünüz Değişken
phihag'ın yanıtı (ve benzerleri) python3'te çalışmaz.
Python 3 için:
d = {'key1': 1,'key2': 14,'key3': 47}
sum(list(d.values()))
Güncelleme! İşe yaramadığı şikayetleri var! Terminalimden bir ekran görüntüsü ekliyorum. Sürümlerde vb. Bir uyumsuzluk olabilir.
Bunun için 'for döngüsünü' düşünebilirsiniz:
d = {'data': 100, 'data2': 200, 'data3': 500}
total = 0
for i in d.values():
total += i
toplam = 800
sum(d.values())
, çünkü .values()
getiri bir List
.
Sözlükteki tüm değerlerin bir oluşturucusunu alıp bir listeye yayınlayabilir ve tüm değerlerin toplamını almak için sum () işlevini kullanabilirsiniz.
Misal:
c={"a":123,"b":4,"d":4,"c":-1001,"x":2002,"y":1001}
sum(list(c.values()))
sum
açısından kendinizireduce
-reduce
(örn daha genel bir şeklidirsum
,min
vemax
tüm cinsinden yazılabilirreduce
) ve diğer sorunlar (örneğin çözebilirproduct
kolayca).