Probleme beim iterieren eines Dictionarys

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
nats
User
Beiträge: 4
Registriert: Dienstag 15. Oktober 2013, 14:17

Hallo,

ich hab folgendes Thema:

centrography_clusters - Dictionary gefüllt mit 18 Clustern. Jeder Key z.B. "1" hat unterschiedliche Koordinatenpaare.

Wenn ich den mean_center einzeln berechne wie in den nächsten Zeilen, kann ich die später zu einem Plot hinzufügen:

Code: Alles auswählen

mean_center = centrography.mean_center(centrography_clusters[1][[X, Y]])
centrography_clusters[1] = mean_center
Hab das für ein paar Werte versucht, hat immer geklappt.

Mein Problem:
Ich möchte das dict gerne durchiterieren, dazu habe ich eine for-Schleife gebaut:

Code: Alles auswählen

for i in centrography_clusters.key():
     mean_center = centrography.mean_center(centrography_clusters[i][[X, Y]])
     centrography_clusters[i] = mean_center
da bekomm ich jetz aber die Fehlermeldung:
IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices

Hab schon versucht die Variable i zu casten, war leider auch nicht erfolgreich.

Ich versteh leider nicht ganz wo das Problem liegt. Kann mir jemand einen Tipp geben?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Entweder ist das kein normales Dictionary, oder du postest hier nicht den Code, den du wirklich verwendest, sondern etwas paraphrasiertes. Denn

Code: Alles auswählen

>>> {}.key()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'dict' object has no attribute 'key'. Did you mean: 'keys'?
Auch die Fehlermeldung ist zu eingekuerzt, und woher kommen X und Y?
Benutzeravatar
__blackjack__
User
Beiträge: 13121
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@nats: Das ist nicht der Code den Du tatsächlich ausgeführt hast, denn der führt in der ersten Zeile zu einem ``AttributeError: 'dict' object has no attribute 'key'`` — es sei denn `centrography_clusters` ist kein Wörterbuch.

Und man sieht ohne Traceback nicht in welcher Zeile der Fehler auftritt. Ich vermute die zweite Zeile. Anscheinend sind da Arrays als Werte und `X` und/oder `Y` enthält etwas unpassendes, oder der Wert aus dem Array ist ein unerwarteter.

Das könnte beispielsweise daran liegen, dass Du über eine Datenstruktur iterierst die Du in der Schleife veränderst. Grosses No Go, da können komische Sachen passieren. Leg einfach eine neue Datenstruktur an.

Code: Alles auswählen

    centrography_clusters = {
        i: centrography.mean_center(value[[X, Y]])
        for i, value in centrography_clusters.items()
    }
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
nats
User
Beiträge: 4
Registriert: Dienstag 15. Oktober 2013, 14:17

hallo ihr beiden,

ich konnte es endlich lösen.

Es war folgendes Problem:
  • Ich hab vor der For-Schleife einen Testrun gemacht und den in das Dictionary an die Position 0 (oder eine andere gespeichert).
  • Anschließend habe ich die for-Schleife angelegt.
  • Hab das Jupyter-Notebook leider nicht komplett neu gestartet, daher ist die Schleife genau bis dahin gekommen,
    wo die Werte bereits überschrieben wurden.

Hab es leider erste jetzt gemerkt, als ich das Notebook nochmal wegen der kompletten Fehlermeldung ganz neu durchlaufen ließ. :oops:


Danke für eure Zeit und Mühe!!!!!
Antworten