Ich bin ein Python-Neuling, der versucht, eine Datei zu analysieren, um eine Tabelle mit Speicherzuweisungen zu erstellen. Meine Eingabedatei hat folgendes Format:
%Vor%Mein erstes Ziel ist es, eine Tabelle zu erstellen, die die Instanzen einer bestimmten Anzahl von Bytezuweisungen zählt. Mit anderen Worten, meine gewünschte Ausgabe für die obige Eingabe wäre etwas wie:
%Vor%(im Moment bin ich nicht besorgt über die Speicheradressen)
Da ich Python benutze, dachte ich, dass es die richtige Art wäre, ein Wörterbuch zu benutzen (basierend auf etwa drei Stunden Python-Tutorials). Ist das eine gute Idee?
Beim Versuch, dies mit einem Wörterbuch zu tun, habe ich beschlossen, die Anzahl der Bytes als "Schlüssel" und einen Zähler als "Wert" zu definieren. Mein Plan war, den Zähler bei jedem Auftreten des Schlüssels zu erhöhen. Ab sofort ist mein Code-Snippet wie folgt:
%Vor%Damit bekomme ich im Aufruf 'has_key' einen Syntaxfehler, der mich zu der Frage veranlasst, ob es überhaupt möglich ist, Variablen als Wörterbuchschlüssel zu verwenden. Alle Beispiele, die ich bisher gesehen habe, gehen davon aus, dass Schlüssel im Voraus verfügbar sind. In meinem Fall kann ich meine Schlüssel nur erhalten, wenn ich die Eingabedatei analysiere.
(Beachten Sie, dass meine Eingabedatei in Tausenden von Zeilen mit Hunderten von verschiedenen Schlüsseln angezeigt werden kann)
Vielen Dank für Ihre Hilfe.
Beim Erlernen einer Sprache geht es genauso um die Syntax und die Grundtypen wie um die Standardbibliothek. Python hat bereits eine Klasse, die Ihre Aufgabe sehr einfach macht: collections.Counter
.
Sie erhalten einen Syntaxfehler, weil Ihnen der Doppelpunkt am Ende dieser Zeile fehlt:
%Vor% Ihr Ansatz ist in Ordnung, aber es ist möglicherweise einfacher, dict.get()
mit einem Standardwert zu verwenden:
Da Ihr allocationList
ein Wörterbuch und keine Liste ist, möchten Sie vielleicht einen anderen Namen für die Variable wählen.
Die Methode dict.has_key()
of dictionnary hat in python3 verschwunden , um Ersetzen Sie es, verwenden Sie das Schlüsselwort in:
Aber in Ihrem Fall können Sie auch alle ersetzen
%Vor%mit einer Zeile mit get :
%Vor% Sie können definitiv Variablen als Diktatschlüssel verwenden. Sie haben jedoch eine Variable namens numBytes
, verwenden aber eine Zeichenfolge mit dem Text "numBytes"
- Sie verwenden eine String-Konstante, nicht die Variable. Das wird den Fehler nicht verursachen, ist aber ein Problem. Versuchen Sie stattdessen:
Betrachte zusätzlich einen Counter . Dies ist eine praktische Klasse für den Fall, den Sie gerade betrachten.
Tags und Links python