Ich habe ein Wörterbuch dct
, für das ich möchte, dass jeder seiner Werte summiert wird, vorausgesetzt, ihre entsprechenden Schlüssel existieren in einer angegebenen Liste lst
.Filterwerte in Python-Generatorausdrücken
Der Code, den ich bisher benutze ist:
sum(dct[k] for k in lst)
In dem obigen Generator Ausdruck würde ich die KeyError
im Falle einen Schlüssel aus der Liste behandeln möchte nicht in der Wörterbuch gefunden. Ich kann nicht finden, wie man (syntax-weise) entweder einen try
- except
Ansatz oder einen if
- else
Ansatz innerhalb dieses Generatorausdrucks implementiert.
Wenn ein Schlüssel aus der Liste nicht im Wörterbuch gefunden wird, sollte er die anderen Werte erhalten. Das Endergebnis der Summen sollte nicht durch fehlende Schlüssel beeinflusst werden. Falls keiner der Schlüssel existiert, sollte Null das Ergebnis der Summe sein.
Sie können "try" nicht in einem Generatorausdruck verwenden. Warum nicht 'dct.get (k)' verwenden, was anstelle eines Fehlers 'None' ergibt, wenn der Schlüssel nicht gefunden wird? Was ist das richtige Verhalten für Ihren Code in dem Fall, in dem ein Schlüssel nicht gefunden wird (z. B. sollte er als "0" zählen)? – jonrsharpe
Wenn ein Schlüssel nicht gefunden wird, sollte er mit den restlichen Schlüsseln fortfahren. (Ich werde meine Beschreibung aktualisieren, um diesen Fall zu erklären - danke, dass Sie dies notiert haben) – Yannis