Ein Array nach einer Spalte sortieren?

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
uLocked
User
Beiträge: 27
Registriert: Dienstag 9. Februar 2021, 10:29

Hallo,

ich möchte die Reihen meines Arrays nach der Größe von Spalte 3 sortieren.
Drauf2Abstand heißt das Array und die Tupel werden so hinzugefügt:

Code: Alles auswählen

drauf2Abstand.append([punkt1,punkt2,Abstand])

Code: Alles auswählen

   
for x in range(0, len(drauf2Abstand)):
        print(drauf2Abstand[x])
Das ist derzeit meine Ausgabe.
Wie kann ich
#Spalte 1 #Spalte 2 #Spalte 3
[array([633, 283], dtype=int32), array([682, 354], dtype=int32), 86.2670273047588]
[array([634, 282], dtype=int32), array([683, 354], dtype=int32), 87.09190547921202]
[array([634, 282], dtype=int32), array([684, 353], dtype=int32), 86.83893136145792]
[array([635, 281], dtype=int32), array([685, 353], dtype=int32), 87.65842800324451]
[array([636, 280], dtype=int32), array([686, 353], dtype=int32), 88.48163651289458
So hätte ich es gerne:
#Spalte 1 #Spalte 2 #Spalte 3
[array([636, 280], dtype=int32), array([686, 353], dtype=int32), 88.48163651289458]
[array([635, 281], dtype=int32), array([685, 353], dtype=int32), 87.65842800324451]
[array([634, 282], dtype=int32), array([683, 354], dtype=int32), 87.09190547921202]
[array([634, 282], dtype=int32), array([684, 353], dtype=int32), 86.83893136145792]
[array([633, 283], dtype=int32), array([682, 354], dtype=int32), 86.2670273047588]

Habs gelöst:

Code: Alles auswählen

sorted_by_third = sorted(drauf2Abstand, key=lambda tup: tup[2])
        print(sorted_by_third[x])
Benutzeravatar
__blackjack__
User
Beiträge: 14178
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@uLocked: ``for i in range(len(sequence)):`` ist in Python ein „anti pattern“ weil man direkt über die Elemente von Sequenzwerten iterieren kann, ohne den unnötigen Umweg über einen Laufindex:

Code: Alles auswählen

for item in drauf2abstand:
    print(item)
Falls `tup` eine Abkürzung für `tuple` sein sollte: das ist falsch, weil es sich da gar nicht um ein Tupel handelt. Grunddatentypen haben in Namen auch eher nichts zu suchen.
“Every thinking person fears nuclear war and every technological nation plans for it. Everyone knows
it's madness, and every country has an excuse.” — Carl Sagan, Cosmos, Episode 13: Who Speaks for Earth?
einfachTobi
User
Beiträge: 512
Registriert: Mittwoch 13. November 2019, 08:38

Erneut beschleicht mich das Gefühl, dass hier Arrays anders verwendet werden, als es sinnvoll wäre. Ein Array in dieser Form scheint nicht ausgereift. Es dann in Schleifen zu erweitern ebenfalls nicht. Wenn du uns in den Gesamtzusammenhang einweihst, können wir ggf. konkrete Tipps zur Umsetzung des Vorhabens geben.
Antworten