Was ist der beste Weg eine alphabetisch sortierte Liste in Python zu erstellen?Wie sortiere ich eine Liste von Strings?
Antwort
Grund Antwort:
mylist = ["b", "C", "A"]
mylist.sort()
Dies ändert Ihre ursprüngliche Liste (das heißt Arten in-place). Um eine sortierte Kopie der Liste zu bekommen, ohne das Original zu verändern, verwenden Sie die sorted()
Funktion:
for x in sorted(mylist):
print x
jedoch über die Beispiele ein wenig naiv sind, weil sie nicht nehmen Gebietsschema berücksichtigt, und führen Sie einen Fall -sensitive Sortierung. Sie können den optionalen Parameter key
verwenden, um eine benutzerdefinierte Sortierreihenfolge anzugeben (die Alternative cmp
ist eine veraltete Lösung, da sie mehrfach ausgewertet werden muss - key
wird nur einmal pro Element berechnet).
So, nach den aktuellen Locale zu sortieren, wobei sprachspezifische Regeln zu berücksichtigen (cmp_to_key
ist eine Hilfsfunktion von functools):
sorted(mylist, key=cmp_to_key(locale.strcoll))
Und schließlich, wenn Sie möchten, können Sie ein custom locale angeben zum Sortieren:
import locale
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') # vary depending on your lang/locale
assert sorted((u'Ab', u'ad', u'aa'),
key=cmp_to_key(locale.strcoll)) == [u'aa', u'Ab', u'ad']
Letzte Anmerkung: finden Sie Beispiele für Groß- und Kleinschreibung Sortierung zu sehen, die die lower()
Methode verwenden - das falsch sind, weil sie nur für die ASCII-Teilmenge von Zeichen arbeiten. Diese beiden sind falsch für alle nicht-englischen Daten:
# this is incorrect!
mylist.sort(key=lambda x: x.lower())
# alternative notation, a bit faster, but still wrong
mylist.sort(key=str.lower)
'mylist.sort (key = str.lower)' ist schneller. – jfs
Guter Punkt. Ich werde mein aktuelles Beispiel so lassen, wie es ist, da es für einen Anfänger wahrscheinlich leichter ist zu sehen, was passiert, aber ich werde das in Zukunft berücksichtigen. –
Wenn jemand neugierig ist, kann die Leistung von list.sort() gefunden werden [http://stackoverflow.com/questions/1517347/about-pythons-built-in-sort-method] –
list.sort()
Es ist wirklich so einfach :)
Funktioniert nicht mit Python 3.6 mit Zahlen. Verwenden Sie stattdessen 'sorted (list)'. – Dmitry
Aber wie funktioniert dieser Griff sprachspezifische Sortierregeln? Wird das Gebietsschema berücksichtigt?
Nein, list.sort()
ist eine generische Sortierfunktion. Wenn Sie nach den Unicode-Regeln sortieren möchten, müssen Sie eine benutzerdefinierte Sortierschlüsselfunktion definieren. Sie können versuchen, das pyuca Modul zu verwenden, aber ich weiß nicht, wie vollständig es ist.
Es ist auch erwähnenswert, die sorted()
Funktion:
for x in sorted(list):
print x
Dies gibt eine neue, sortierte Version einer Liste, ohne die ursprüngliche Liste zu ändern.
Der richtige Weg, Strings zu sortieren ist:
import locale
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') # vary depending on your lang/locale
assert sorted((u'Ab', u'ad', u'aa'), cmp=locale.strcoll) == [u'aa', u'Ab', u'ad']
# Without using locale.strcoll you get:
assert sorted((u'Ab', u'ad', u'aa')) == [u'Ab', u'aa', u'ad']
Das vorherige Beispiel von mylist.sort(key=lambda x: x.lower())
wird für ASCII-only Kontexten funktionieren.
Angenommen s = "ZWzaAd"
Um oben Zeichenfolge zu sortieren die einfache Lösung unten sein wird.
print ''.join(sorted(s))
Bitte benutzen Sie sortiert() Funktion in Python3
items = ["love", "like", "play", "cool", "my"]
sorted(items2)
- 1. Wie sortiere ich eine Liste von Abschnittsnummern in Python?
- 2. Wie sortiere ich eine Liste nach AddRange?
- 3. Wie sortiere ich eine Liste numerischer Wörterbücher?
- 4. Wie sortiere ich eine Liste in JavaScript?
- 5. Wie sortiere ich eine Liste von Strings nach der höchsten Nummer
- 6. Wie sortiere ich eine Python-Liste von Zeitwerten?
- 7. Wie sortiere ich eine Liste von Listen in R?
- 8. Wie sortiere ich eine Liste nach einer anderen Liste?
- 9. Wie sortiere ich ein Ruby-Array von Strings nach Länge?
- 10. Wie sortiere ich ein Array von Ints und Strings?
- 11. Wie sortiere ich die Liste des Datumsobjekts?
- 12. Wie man eine Liste von Strings verbindet?
- 13. Python - Wie eine Liste von Strings
- 14. Wie schnell eine Liste von Strings
- 15. wie eine Liste von Strings zusammenzufassen
- 16. Wie sortiere ich eine Liste oder ein Wörterbuch im Django?
- 17. Wie sortiere ich eine Liste basierend auf drei Anforderungen?
- 18. Wie sortiere ich eine Datentabelle
- 19. C# Wie sortiere ich eine sortierte Liste nach ihrer Wertspalte
- 20. Python, Tk und OptionMenu: Wie sortiere ich eine Dropdown-Liste?
- 21. Wie sortiere ich eine generische Liste mit einem benutzerdefinierten Vergleich?
- 22. Wie sortiere ich eine Liste mit einer bestimmten Reihenfolge?
- 23. Wie sortiere ich eine verknüpfte Liste in sql?
- 24. Wie sortiere ich eine Liste in Scala nach zwei Feldern?
- 25. Wie kann ich eine Liste von Strings durchlaufen?
- 26. PostgreSQL: Wie suche ich eine Liste von Strings als Tabelle?
- 27. Wie sortiere ich eine System.Collections.Generic.List in VB.Net?
- 28. Wie sortiere ich eine Sammlung?
- 29. Wie sortiere ich Strings in einem Android RecyclerView?
- 30. Wie sortiere ich automatisch eine QTreeWidget-Spalte?
Verwenden 'locale' und die Folgenvergleichsmethoden natürlich sortieren nach aktuellen locale. – u0b34a0f6ae