Seite 1 von 1

Probleme beim iterieren eines Dictionarys

Verfasst: Dienstag 17. Januar 2023, 16:05
von nats
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?

Re: Probleme beim iterieren eines Dictionarys

Verfasst: Dienstag 17. Januar 2023, 16:46
von __deets__
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?

Re: Probleme beim iterieren eines Dictionarys

Verfasst: Dienstag 17. Januar 2023, 16:50
von __blackjack__
@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()
    }

Re: Probleme beim iterieren eines Dictionarys

Verfasst: Dienstag 17. Januar 2023, 18:04
von nats
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!!!!!