enumerate problem

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Nebeig
User
Beiträge: 11
Registriert: Freitag 20. April 2018, 14:20

Hallo Zusammen
Ich habe folgendes Problem:
Ich habe eine liste branches mit tuple positione drin.
Das sieht dann in etwa so aus
(0, 0, 0)
(0, 0, 1)
(0, 0, 2)
(0.03521536584636689, 0.047416708336478305, 6.442265053460119) usw.
Wenn ich dann den folgenden Code ausführen möchte:

Code: Alles auswählen

verts = {b.pos:i for i,b in enumerate(branches)}
        # create vertex pairs as edge by locating vert index based on coordinates
        edges = [ (verts[b.pos],verts[branches[b.parent].pos])for b in branches if b.parent is not None]
        # replace vertex mapping by simple list of coordinates
        verts = [b.pos for b in branches]
bekomme ich eine Fehlermeldung dass die listen inidces integer oder slices sein müssen aber nicht Branch(das einzelne Objekt der liste)
Jedoch funktioniert der Folgende Code:

Code: Alles auswählen

class Branch:
	def __init__(self,pos,parent=None):
		self.pos = pos
		self.parent = parent



branches = []

branches.append(Branch((0,0,0),None))
branches.append(Branch((0,0,1),0))
branches.append(Branch((1,0,2),1))
branches.append(Branch((-1,0,2),1))

# create a mapping from vertex position to vertex index 
verts = {b.pos:i for i,b in enumerate(branches)}

# create vertex pairs as edge by locating vert index based on coordinates
edges = [ (verts[b.pos],verts[branches[b.parent].pos])for b in branches if b.parent is not None]

# replace vertex mapping by simple list of coordinates
verts = [b.pos for b in branches]
Was mache ich falsch?
Benutzeravatar
__blackjack__
User
Beiträge: 13103
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Du machst im Testcode etwas anders als im eigentlichen Code. Kann es sein das im eigentlichen Code das `parent`-Argument nicht irgendwelche magischen Nummern, sondern `Branch`-Objekte sind? Würde irgendwie Sinn machen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Nebeig
User
Beiträge: 11
Registriert: Freitag 20. April 2018, 14:20

Ja das ist so. Das könnte also an dem liegen. Werde es ausprobieren. Danke Vielmals!

edit: Habs ausprobiert und hat geklappt
Antworten