2016-06-22 12 views
-1

Ich brauche eine Liste wie unten mit zunehmender Reihenfolge der String-LängeWie interpretiere ich die Länge des None-Objekts als Null?

lst = [None, 'abc', 'a', 'ab'] 

ich den Code unten zu sortieren bin mit zu tun, dass

lst.sort(key = lambda s: len(s)) 

aber es ist produziert Fehler

TypeError: object of type 'NoneType' has no len()

Es ist offensichtlich, None Typ Objekt hat keine Länge. Also, wie kann ich den obigen Code ändern, so dass es beginnt, die Länge von None Objekt als 0 zu interpretieren.

+1

'key = Lambda s: s ist nicht None und len (s)' – vaultah

+0

Warum haben Sie 'None's in Ihrer String-Liste? Sind Sie sicher, dass Sie 'None' anstelle von, sagen wir, eine leere Zeichenfolge haben sollten? – user2357112

Antwort

2

Sie können einen ternären Operator verwenden:

lst.sort(key = lambda s: 0 if s is None else len(s)) 

0 zurückgeführt wird, wenn das Element None und len(s) für andere Elemente ist

Verwandte Themen