2017-11-02 1 views
-5

Ich versuche, eine Liste alphabetisch zu sortieren - aber mit Werten, die x auf der Vorderseite enthalten.Python sortiere eine Liste nach Alphabet

def front_x(words): 
    r = words 
    s = [] 
    o = [] 
    for x in r: 
     if "x" in x: 
      s.append(x) 
     else: 
      o.append(x) 
    return sorted(s,key = lambda f:f.find("x")) + sorted(o) 

front_x(['bbb', 'ccc', 'axx', 'xzz', 'xaa']) 

Es gibt zur Zeit ['xzz', 'xaa', 'axx', 'bbb', 'ccc'],

Ich mag es ['xaa', 'xzz', 'axx', 'bbb', 'ccc']

+3

Hallo Jawad, Sie müssen mehr Details in Ihre Frage aufnehmen sowie ein wenig sauberer formatieren –

Antwort

0

Sie zurückkehren sollen nur mit der sorted Funktion dazu in der Lage zu.

Versuchen Sie etwas wie das;

Dies wird die Werte, die "x" enthalten, nach vorne und dann alphabetisch sortieren.

Wenn Sie nur die Werte sortieren wollen, die mit "x" beginnen (ich bin mir nicht sicher, ob Sie die Frage haben), dann müssen Sie es leicht anpassen;

sorted(s, lambda w: ("x" == w[:1], w)) 

Lassen Sie mich wissen, wenn ich nicht ganz verstanden habe, was Sie suchen.

+0

Danke, dass Sie sich die Zeit genommen haben, meine Frage zu beantworten, habe ich Ihre erste Methode versucht und es zurückgegeben ['axx', 'xaa' , 'xzz', 'bbb', 'ccc'], während ich möchte, dass das Ergebnis ['xaa', 'xzz', 'axx', 'bbb', 'ccc'] ist, was bedeutet, dass ich will sortiere sie mit "x", aber es sollte den zweiten char normal sortieren, da die sortierte() Funktion –

+0

hey bro Ich löste das Problem die andere einfache Art danke :) –

+0

Normalerweise würden Sie Antworten auffrischen, die geholfen haben, zu Ihrer Lösung zu gelangen - und poste deine Antwort, wenn du sie selbst gefunden hast. – Shadow

Verwandte Themen