165 Stimmen

Sortierung der Python-Liste nach der Länge der Zeichenkette

Ich möchte eine Liste von Zeichenfolgen auf der Grundlage der Zeichenfolgenlänge sortieren. Ich habe versucht, sort as follows zu verwenden, aber es scheint mir nicht das richtige Ergebnis zu liefern.

xs = ['dddd','a','bb','ccc']
print xs
xs.sort(lambda x,y: len(x) < len(y))
print xs

['dddd', 'a', 'bb', 'ccc']
['dddd', 'a', 'bb', 'ccc']

Was könnte falsch sein?

0voto

Aashutosh Kumar Punkte 403

Ich kann dies mit den folgenden zwei Methoden tun, indem ich die Funktion

def lensort(x):
    list1 = []
    for i in x:
        list1.append([len(i),i])
    return sorted(list1)

lista = ['a', 'bb', 'ccc', 'dddd']
a=lensort(lista)
print([l[1] for l in a])

In einem Liner mit Lambda, wie unten, ein bereits oben beantwortet.

 lista = ['a', 'bb', 'ccc', 'dddd']
 lista.sort(key = lambda x:len(x))
 print(lista)

-1voto

Saurabh Ariyan Punkte 749
def lensort(list_1):
    list_2=[];list_3=[]
for i in list_1:
    list_2.append([i,len(i)])
list_2.sort(key = lambda x : x[1])
for i in list_2:
    list_3.append(i[0])
return list_3

Das funktioniert bei mir!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X