Seite 1 von 1

TK Listbox Sortieren in 2er index range

Verfasst: Freitag 2. Februar 2018, 11:37
von 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!?

Re: TK Listbox Sortieren in 2er index range

Verfasst: Freitag 2. Februar 2018, 12:17
von noisefloor
Hallo,

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

Gruß, noisefloor

Re: TK Listbox Sortieren in 2er index range

Verfasst: Freitag 2. Februar 2018, 12:50
von __deets__
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)

Re: TK Listbox Sortieren in 2er index range

Verfasst: Freitag 2. Februar 2018, 13:44
von Sirius3
@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.

Re: TK Listbox Sortieren in 2er index range

Verfasst: Freitag 2. Februar 2018, 14:26
von 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)]

Re: TK Listbox Sortieren in 2er index range

Verfasst: Freitag 2. Februar 2018, 14:38
von __deets__
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.

Re: TK Listbox Sortieren in 2er index range

Verfasst: Freitag 2. Februar 2018, 15:45
von noisefloor
Hallo,

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

Gruß, noisefloor

aaa

Verfasst: Mittwoch 14. Februar 2018, 13:43
von kani
aaa