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 62bu 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 62bu durumda?
Yanıtlar:
Beklediğiniz gibi:
sum(d.values())
Python 2.7.12aynı 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 sixmodü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()))
sumaçısından kendinizireduce-reduce(örn daha genel bir şeklidirsum,minvemaxtüm cinsinden yazılabilirreduce) ve diğer sorunlar (örneğin çözebilirproductkolayca).