TK Listbox Sortieren in 2er index range

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
kani

Hallo ich habe folgendes Problem!

Also ich hab ne TK listbox siehe bsp.

Name1
Daten

Name2
Daten

Name3
Daten


Und möchte nun die listbox nach den Namen sortieren!
Allerdings muss da die 2te zeile immer mit da sie zum Namen gehört.
Es ging nicht anders denn \n geht ja bei Listbox nicht also musten die restlichen daten zum Namen Eintrag auf den nächsten Listbox eintrag verlegt werden!

Krieg es nicht hin die Daten in listbox 2 er range nach den jeweiligen Namen vom Listbox eintrag zuvor zu sortieren.
Vieleicht weiss ja einer mehr von euch!?
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

in welcher Form liegen die Ausgansdaten denn vor? Liste, Dict, DB-Abfrage, ...?

Gruß, noisefloor
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du machst aus deiner Liste eine Liste von Tupeln, sortierst die, und entrollst sie wieder.

Ungetestet, und pseudo Code:

Code: Alles auswählen

h = zip(liste[:-1], liste[1:])
h.sort()
for a, b in h:
     dropdown.add(a)
     dropdown.add(b)
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@kani: Du sortierst die Daten, bevor Du sie für die Listebox entfaltest. Da kommt es eben drauf an, wie noisefloor schon gefragt hat, in welcher Datenstruktur sie vorliegen.
kani

Gibt es bei Phyton 3.6.1 nen sortier Bug oder warum kommt bei der Liste nur Kauderwelsch raus und die test liste geht!?

Code: Alles auswählen

liste1 = ["['2', '0/16/18 - Normal/Directors Cut/Unbekannt - DVD/Blue Ray - 0000']['1', '0/16/18 - Normal/Directors Cut/Unbekannt - DVD/Blue Ray - 0000']"]
liste1=str(liste1)
b=liste1.replace('["[','[(')
c=b.replace(']"]',')]')
d=c.replace('][','), (')
print(d)
f=sorted(d)
print(f)

#test das funktioniert
random = [(2, 2), (3, 4), (4, 1), (1, 3)]
g=sorted(random)
print(g)
ergebniss:
[('2', '0/16/18 - Normal/Directors Cut/Unbekannt - DVD/Blue Ray - 0000'), ('1', '0/16/18 - Normal/Directors Cut/Unbekannt - DVD/Blue Ray - 0000')]
[' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', "'", "'", "'", "'", "'", "'", "'", "'", '(', '(', ')', ')', ',', ',', ',', '-', '-', '-', '-', '-', '-', '/', '/', '/', '/', '/', '/', '/', '/', '/', '/', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '1', '1', '1', '2', '6', '6', '8', '8', 'B', 'B', 'C', 'C', 'D', 'D', 'D', 'D', 'D', 'D', 'N', 'N', 'R', 'R', 'U', 'U', 'V', 'V', '[', ']', 'a', 'a', 'a', 'a', 'a', 'a', 'b', 'b', 'c', 'c', 'e', 'e', 'e', 'e', 'e', 'e', 'i', 'i', 'k', 'k', 'l', 'l', 'l', 'l', 'm', 'm', 'n', 'n', 'n', 'n', 'n', 'n', 'o', 'o', 'o', 'o', 'r', 'r', 'r', 'r', 'r', 'r', 's', 's', 't', 't', 't', 't', 't', 't', 'u', 'u', 'u', 'u', 'y', 'y']
[(1, 3), (2, 2), (3, 4), (4, 1)]
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Python hat keinen Bug. Dein Programm hingegen schon. Deine liste1 (ganz schlechter name uebrigens) ist nicht, was du denkst. Schau mal genau hin.

Nachtrag: das ganze rumreplace und Co muss uebrigens weg. Du kannst deine Liste da oben schon so hinschreiben, wie sie sich gehoert. Und wenn du sie speichern und laden willst, dann solltest du dafuer eine geeignete Art waehlen, zB als JSON oder als CSV-Datei.
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

wo kommt denn `liste1` her? So wie die Liste aussieht, liegt da vorher schon was im argen...

Gruß, noisefloor
Antworten