2017-11-29 4 views
1

Ich habe eine Liste von Zeichenketten wie folgt aus:sortieren Liste von Strings

l = ['car58=C:/Files/SB.car58- 094.38.JPG', 
    'bike53=C:/Files/SB.bike53- 006.33.JPG', 
    'car46=C:/Files/SB.car46- 88.22.JPG', 
    'bike12=C:/Files/SB.bike12- 006.33.JPG', 
    'acc9=C:/Files/SB.acc9- 006.33.JPG'] 

Ich versuche, die Liste mit den Start zu sortieren (Position 0) jedes Strings bis zum Zeichen „=“ alle ignorieren Zeichen nach ihm, so dass das Ergebnis ist:

s = ['acc9=C:/Files/SB.acc9- 116.95.JPG', 
    'bike12=C:/Files/SB.bike12- 006.33.JPG', 
    'bike53=C:/Files/SB.bike53- 002.12.JPG', 
    'car46=C:/Files/SB.car46- 88.22.JPG', 
    'car58=C:/Files/SB.car58- 094.38.JPG'] 

Edit: die Antwort zur Verfügung gestellt von Ajax1234 mein Problem gelöst:

s = sorted(l, key=lambda x:x[:x.index('=')]) 

Antwort

1

können Sie verwenden .index():

s = [['car58=C:/Files/SB.car58- 094.38.JPG'], 
['bike53=C:/Files/SB.bike53- 006.33.JPG'], 
['car46=C:/Files/SB.car46- 88.22.JPG'], 
['bike12=C:/Files/SB.bike12- 006.33.JPG'], 
['acc9=C:/Files/SB.acc9- 006.33.JPG']] 
new_s = sorted(s, key=lambda x:x[0][:x[0].index('=')]) 

Ausgang:

[['acc9=C:/Files/SB.acc9- 006.33.JPG'], ['bike12=C:/Files/SB.bike12- 006.33.JPG'], ['bike53=C:/Files/SB.bike53- 006.33.JPG'], ['car46=C:/Files/SB.car46- 88.22.JPG'], ['car58=C:/Files/SB.car58- 094.38.JPG']] 

Edit: list.sort() wird auch die gewünschte Ausgabe erzeugen:

s.sort() 
print(s) 

Ausgang:

[['acc9=C:/Files/SB.acc9- 006.33.JPG'], ['bike12=C:/Files/SB.bike12- 006.33.JPG'], ['bike53=C:/Files/SB.bike53- 006.33.JPG'], ['car46=C:/Files/SB.car46- 88.22.JPG'], ['car58=C:/Files/SB.car58- 094.38.JPG']] 

Bezüglich Ihrer letzten Kommentar, sollte diese Arbeit:

s = ['car58=C:/Files/SB.car58- 094.38.JPG', 'bike53=C:/Files/SB.bike53- 006.33.JPG', 'car46=C:/Files/SB.car46- 88.22.JPG', 'bike12=C:/Files/SB.bike12- 006.33.JPG', 'acc9=C:/Files/SB.acc9- 006.33.JPG'] 
new_s = sorted(s, key=lambda x:x[:x.index('=')]) 

Ausgang:

['acc9=C:/Files/SB.acc9- 006.33.JPG', 'bike12=C:/Files/SB.bike12- 006.33.JPG', 'bike53=C:/Files/SB.bike53- 006.33.JPG', 'car46=C:/Files/SB.car46- 88.22.JPG', 'car58=C:/Files/SB.car58- 094.38.JPG'] 
+0

@DOS Kein Problem! Seltsamerweise lief dieser Code für mich gut. Haben Sie den Code auf 's = [['car58 = C: /Files/SB.car58-094.38.JPG'], ['bike53 = C: /Files/SB.bike53-006.33.JPG'], ausgeführt ['car46 = C: /Files/SB.car46-88.22.JPG'], ['bike12 = C: /Files/SB.bike12-006.33.JPG'], ['acc9 = C:/Dateien/SB .acc9- 006.33.JPG ']] '? – Ajax1234

+0

@ Ajax1234 Ja, ich lief es auf dieser Liste.Im auch Angst, ich habe vielleicht einen weiteren Fehler gemacht.Ich erkannte nicht, dass jedes einzelne Element in der Liste nicht von "[]" enthalten und nur durch "," getrennt. Tut mir leid, nicht Sicher, ob das eine Bedeutung hat, aber es ist ein Unterschied zwischen unseren Lösungen. – DOS

+0

@ Ajax1234 Ich denke, ich habe eine Lösung für das zweite Problem gefunden. Ich habe "versuchen" und "außer" für den Code und es hat funktioniert. Vielen Dank für Ihre Hilfe und Entschuldigung für die Verwechslung. – DOS

0

eine Liste Verwendung Liste Methode sort() zu sortieren:

l = ['car58=C:/Files/SB.car58- 094.38.JPG', 
    'bike53=C:/Files/SB.bike53- 006.33.JPG', 
    'car46=C:/Files/SB.car46- 88.22.JPG', 
    'bike12=C:/Files/SB.bike12- 006.33.JPG', 
    'acc9=C:/Files/SB.acc9- 006.33.JPG'] 

# sort list in place 
l.sort() 

print('\n'.join(l)) 

druckt:

acc9=C:/Files/SB.acc9- 006.33.JPG 
bike12=C:/Files/SB.bike12- 006.33.JPG 
bike53=C:/Files/SB.bike53- 006.33.JPG 
car46=C:/Files/SB.car46- 88.22.JPG 
car58=C:/Files/SB.car58- 094.38.JPG 
Verwandte Themen