Python - Create Counter () aus dem Mapping, nicht ganzzahlige Werte

8

Betrachten Sie einen Basiszähler, der aus einem Mapping initialisiert wurde:

%Vor%

Alles ergibt einen Sinn. Aber Counter erlaubt mir auch, von einem Wörterbuch zu initialisieren, das Nicht-Ganzzahlen als Schlüssel und Werte hat. Zum Beispiel

%Vor%

Der oben geschriebene Code ist Python 2.7, aber ich habe ihn auch auf Python 3.5 getestet und habe das gleiche Ergebnis erhalten. Dies scheint die grundlegendste Regel des Zählers zu verletzen, wo "Elemente als Wörterbuchschlüssel gespeichert werden und ihre Zählungen als Wörterbuchwerte gespeichert werden." Soll der Zähler Werte zulassen, die keine Ganzzahlen sind? Sollte es nicht einen Fehler oder etwas werfen? Was erklärt dieses Verhalten?

    
GHH 03.12.2016, 17:05
quelle

1 Antwort

8

Es gibt keine Einschränkungen für die Werte eines Zählerobjekts, und dies ist in der Dokumentation eindeutig angegeben:

  

Die Klasse Counter selbst ist eine Wörterbuchunterklasse ohne Einschränkungen   auf seinen Schlüsseln und Werten. Die Werte sind beabsichtigt als Zahlen   counts, aber Sie könnten alles im Wertfeld speichern.

[ Hervorhebung von mir ]

Das Verhalten einiger der Methoden Counter wird auch in einem allgemeinen Fall beschrieben, z. B .:

  

Die Methode most_common() erfordert nur, dass die Werte bestellbar sind.

%Vor%

Man könnte also leicht auf Probleme in Python 3 stoßen, wenn Sie im Zähler-Objekt unkorrigierbare Typen als Werte haben:

%Vor%

Daher möchten Sie im Allgemeinen die Werte als tatsächliche Anzahl von Objekten beibehalten und ein vanille Wörterbuch verwenden, wenn Werte nicht numerische Typen oder streng nicht ganze Zahlen sein sollen.

    
Moses Koledoye 03.12.2016 17:11
quelle

Tags und Links