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: 14054
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.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
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