ich soll ene Liste mit Strings, welche durch Punkte getrennte Zahlen (z.B. "1.2.3") beinhalten sortieren.
Ein "normaler" sort würde "10.1" klarerweise nach "1.2" und vor "2.x" reihen (so wie im Beispiel in der Liste).
Mögen aus unerfindlichen gründen die user nicht so gerne
Um das Problem zu lösen habe ich fogendes programmiert.
HINT: das zweite Element bruauche ich zur weiteren Verarbeitung.
Code: Alles auswählen
psp = [
['1',1],
['1.1',7],
['1.1.1',9],
['10',5],
['10.1',6],
['2',2],
['3',3],
['3.1',8],
['3.1.1.1',4],
]
for x in sorted([''.join(['{0:>5s}.'.format(x) for x in i[0].split('.')]) for i in psp]):
x = x.replace(' ','').strip('.')
q = next((i for i in psp if i[0] == x), None)
print q[0],':',q[1]
Ich könnte das alles in "zwischen-Listen" auflösen, macht es aber auch nicht wirklich besser.
Ich kann auch nicht die maximale 'tiefe' vorhersagen es könnte auch "1.1.1.1.1.1.1.1" vorkommen.
Hat jemamd das Problem schon eleganter gelöst?
Lg
\^/ili
