Hoe alle waarden in een woordenboek in te dienen?

Laten we zeggen dat ik een woordenboek heb waarin de toetsenkaart naar gehele getallen houdt:

d = {'key1': 1,'key2': 14,'key3': 47}

Is er een syntactisch minimalistische manier om de som van de waarden in d-I.E te retourneren. 62In dit geval?


Antwoord 1, Autoriteit 100%

Zoals u zou verwachten:

sum(d.values())

Antwoord 2, Autoriteit 12%

In Python 2 kunt u vermijden om een ​​tijdelijke kopie van alle waarden te maken met behulp van de itervalues()Woordenboekmethode, die een iterator van de toetsen van de woordenboek retourneert:

sum(d.itervalues())

In Python 3 kunt u gewoon d.values()gebruiken omdat die methode is gewijzigd om dat te doen (en itervalues()is verwijderd omdat het niet langer nodig was ).

Om het gemakkelijker te maken om versie-onafhankelijke code te schrijven die altijd herhaalt over de waarden van de toetsen van de woordenboek, kan een hulpprogramma nuttig zijn:

import sys
def itervalues(d):
    return iter(getattr(d, ('itervalues', 'values')[sys.version_info[0]>2])())
sum(itervalues(d))

Dit is in wezen wat Benjamin Peterson’s sixmodule doet.


Antwoord 3, Autoriteit 3%

Natuurlijk dat er is. Hier is een manier om de waarden van een woordenboek te bedragen.

>>> d = {'key1':1,'key2':14,'key3':47}
>>> sum(d.values())
62

Antwoord 4

d = {'key1': 1,'key2': 14,'key3': 47}
sum1 = sum(d[item] for item in d)
print(sum1)

je kunt het doen met de for-lus


Antwoord 5

Ik denk dat sum(d.values())de meest efficiënte manier is om de som te krijgen.

Je kunt ook de reduceerfunctie proberen om de som te berekenen samen met een lambda-uitdrukking:

reduce(lambda x,y:x+y,d.values())

Antwoord 6

som(d.waarden()) – “d” -> Uw woordenboekvariabele


Antwoord 7

Phihags antwoord (en soortgelijke) werken niet in python3.

Voor python 3:

d = {'key1': 1,'key2': 14,'key3': 47}
sum(list(d.values()))

Bijwerken!
Er zijn klachten dat het niet werkt! Ik voeg gewoon een screenshot toe vanaf mijn terminal. Kan een mismatch zijn in versies enz.


Antwoord 8

Je zou hiervoor ‘for loop’ kunnen overwegen:

 d = {'data': 100, 'data2': 200, 'data3': 500}
  total = 0
  for i in d.values():
        total += i

totaal = 800


Antwoord 9

GEBRUIK sum() OM DE WAARDEN IN EEN WOORDENBOEK OP TE SOMMEN.

Roep dict.values() aan om de waarden van een woordenboekdict te retourneren.
Gebruik sum(values) om de som van de waarden van de vorige stap te retourneren.

d = {'key1':1,'key2':14,'key3':47}
values = d.values()
#Return values of a dictionary    
total = sum(values)
print(total)

Antwoord 10

eenvoudigste/domste oplossing:

https://trinket.io/python/a8a1f25353

d = {'key1': 1,'key2': 14,'key3': 47}
s = 0
for k in d:
    s += d[k]
print(s)

of als je het liefhebber wilt:

https://trinket.io/python/5fcd379536

import functools
d = {'key1': 1,'key2': 14,'key3': 47}
s = functools.reduce(lambda acc,k: acc+d[k], d, 0)
print(s)

Antwoord 11

Je kunt een generator krijgen van alle waarden in het woordenboek, deze vervolgens naar een lijst casten en de functie sum() gebruiken om de som van alle waarden te krijgen.

Voorbeeld:

c={"a":123,"b":4,"d":4,"c":-1001,"x":2002,"y":1001}
sum(list(c.values()))

Other episodes