2016-08-17 4 views
0

Ich habe die folgende Liste, die ich sortieren möchten:Sortierliste der Dezimalstellen in Python

['104.900209904', '238.501860857', '9.59893298149', '362.470027924', '419.737339973']

ich die „sortiert“ verwendete Funktion, es zu tun:

Block1_Video1 = sorted(Block1_Video1) 

jedoch , das ist, was ich bekomme:

['104.900209904', '238.501860857', '362.470027924', '419.737339973', '9.59893298149'] 

Während dies ist was ich will (eine Liste numerisch sortiert, unter Berücksichtigung der Dezimalstellen):

[''9.59893298149', 104.900209904', '238.501860857', '362.470027924', '419.737339973'] 

Wie kann ich das erreichen?

+0

Ihre Liste ist eine Liste von Zeichenfolgen, keine Zahlen. Es sortiert sie alphabetisch, nicht numerisch. Deshalb ist es lustig. Ich würde die Antwort posten, aber ich sehe, dass jemand mich bereits darauf einspielt, ich wollte das nur weiter ausführen. – Cody

Antwort

7

Die Sortierung muss auf den Float-Werten der entsprechenden Strings in der Liste basieren.

Block1_Video1 = ['104.900209904', '238.501860857', '9.59893298149', '362.470027924', '419.737339973'] 
sorted(Block1_Video1,key=lambda x:float(x)) 

Oder verwenden Sie einfach

sorted(Block1_Video1, key=float) 
+1

Keine Notwendigkeit für das Lambda: nur 'key = float' wird funktionieren. –

1

Sie haben Ihre Strings in Zahlen konvertieren erste ist dies möglich, mit dem Schlüssel-Argument der sorted Funktion:

Block1_Video1 = sorted(Block1_Video1, key=float) 

oder wie Sie Weisen Sie die neue Liste der gleichen Variablen zu. Sie können auch direkt sortieren:

Block1_Video1.sort(key=float)