Ich weiß tat ähnliche Fragen wurde schon mehrmals gefragt. Und ich mache jetzt wie man die Suchfunktion benutzt, aber es funktioniert immer noch nicht.Python Sortierung Liste von Listen mit Casting
Also hier ist das Problem Setup. Ich habe eine Liste von Listen mit Strings. Eine Spalte enthält Strings, die tatsächlich Float-Werte darstellen. Und es ist auch die Spalte, nach der ich sortieren möchte. Das Problem ist, dass Python das - (Minus) Zeichen bei Einträgen ignoriert. So ein Beispiel Liste:
[[blaa, '0.3', bli], [bla, '0.1', blub], [bla, '-0.2', blub]]
wird wie folgt sortiert:
[[bla, '0.1', blub], [bla, '-0.2', blub], [blaa, '0.3', bli]]
und nicht, wie es sein sollte:
[[bla, '-0.2', blub],[bla, '0.1', blub], [blaa, '0.3', bli]]
Bisher habe ich versucht:
- Gießen der zweiten Spalte zu float und Sortieren nach dass Spalte
wie:
for i in mylist:
i[1] = float(i[1])
mylist.sort(key=lambda x: x[1])
oder mit
for i in mylist:
i[1] = float(i[1])
mylist.sort(key=operator.itemgetter(1))
- Ich habe auch versucht, meine eigene vergleichen Funktion zu definieren:
wie:
mylist.sort(cmp=lambda x,y: cmp(float(x), float(y)), key=operator.itemgetter(1))
Und jede andere Kombination der oben genannten Methoden, auch das gleiche mit sorted
. Bis jetzt ohne Erfolg, wird das Minuszeichen jedes Mal ignoriert. Wie kann das gelöst werden?
[bearbeiten] Auch schon versucht der Ignacio Vorschlag. Ich sollte erwähnen, ich muss Python 2.5 verwenden.
das könnte also die Umweltprobleme sein. Überprüfen Sie Ihre Python-Version. – Kabie
Wenn Sie meinen, dass etwas eine Zeichenkette sein soll, sollten Sie es als Hinweis auf Leute, die Ihren Code ausführen möchten, in Anführungszeichen setzen. – aaronasterling
Wie sicher sind Sie, dass sie alle Saiten sind? –