Sortierliste der Python-Datenstruktur alphabetisch


159

Ich bin etwas verwirrt bezüglich der Datenstruktur in Python. (), []Und {}. Ich versuche, eine einfache Liste zu sortieren, wahrscheinlich da ich den Datentyp nicht identifizieren kann, kann ich ihn nicht sortieren.

Meine Liste ist einfach: ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']

Meine Frage ist, um welche Art von Daten es sich handelt und wie die Wörter alphabetisch sortiert werden.


Wenn Sie Ihre Liste sortieren möchten, können Sie "list = ['Stem', 'konstituieren', 'Sedge', 'Eflux', 'Laune', 'Intrige'] list.sort () print list" verwenden.
Kannanrbk

[]schließt den eingebauten Datentyp ein list(siehe tutorialspoint.com/python/python_lists.htm ). Listen sind nur Gruppen von Werten (sie können andere iterierbare Objekte enthalten, dh verschachtelte Listen). ()schließt das eingebaute ein tuple. Sie sind unveränderlich (können nicht geändert werden). (Siehe tutorialspoint.com/python/python_tuples.htm ). Und {}schließt das eingebaute ein dictionary. Parallelen zu einem Wörterbuch (für Wörter), wobei ein 'Schlüssel' das Wort und der 'Wert' die Definition ist. (Siehe tutorialspoint.com/python/python_dictionary.htm ).
Rushy Panchal

Antworten:


231

[]bezeichnet eine Liste , ()bezeichnet ein Tupel und {}bezeichnet ein Wörterbuch . Sie sollten sich das offizielle Python-Tutorial ansehen, da dies die Grundlagen der Programmierung in Python sind.

Was Sie haben, ist eine Liste von Zeichenfolgen. Sie können es so sortieren:

In [1]: lst = ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']

In [2]: sorted(lst)
Out[2]: ['Eflux', 'Intrigue', 'Sedge', 'Stem', 'Whim', 'constitute']

Wie Sie sehen können, werden Wörter, die mit einem Großbuchstaben beginnen, gegenüber Wörtern bevorzugt, die mit einem Kleinbuchstaben beginnen. Wenn Sie sie unabhängig voneinander sortieren möchten, gehen Sie folgendermaßen vor:

In [4]: sorted(lst, key=str.lower)
Out[4]: ['constitute', 'Eflux', 'Intrigue', 'Sedge', 'Stem', 'Whim']

Sie können die Liste auch in umgekehrter Reihenfolge sortieren:

In [12]: sorted(lst, reverse=True)
Out[12]: ['constitute', 'Whim', 'Stem', 'Sedge', 'Intrigue', 'Eflux']

In [13]: sorted(lst, key=str.lower, reverse=True)
Out[13]: ['Whim', 'Stem', 'Sedge', 'Intrigue', 'Eflux', 'constitute']

Bitte beachten Sie: Wenn Sie mit Python 3 arbeiten, strist dies der richtige Datentyp für jede Zeichenfolge, die für Menschen lesbaren Text enthält. Wenn Sie jedoch noch mit Python 2 arbeiten müssen, können Sie sich mit Unicode-Zeichenfolgen befassen, die den Datentyp unicodein Python 2 haben, und nicht str. Wenn Sie in einem solchen Fall eine Liste von Unicode-Zeichenfolgen haben, müssen Sie key=unicode.lowerstattdessen schreiben key=str.lower.


Bei Verwendung des zweiten Beispiels für ein Pymongo- find_one()Ergebnis aus einer MongoDB-Datenbank wird folgende Fehlermeldung angezeigt : descriptor 'lower' requires a 'str' object but received a 'unicode'. Das Ergebnis ist ein Array von Zeichenfolgen, die wie folgt implementiert sind : results['keywords'] = sorted(keywords['keywords'], key=str.lower). Weiß jemand, wie man das löst?
user1063287

@ user1063287 Entschuldigung für meine späte Antwort. In Ihrem Fall müssen Sie key=unicode.lowerstatt schreiben key=str.lower. Dies liegt daran, dass es sich um Unicode-Zeichenfolgen handelt, nicht um Byte-Zeichenfolgen. Weitere Informationen hierzu finden Sie im offiziellen Unicode-HOWTO , insbesondere zu den jeweiligen Unterschieden zwischen Python 2 und 3.
pemistahl

32

Python verfügt über eine integrierte Funktion namens sorted, die Ihnen eine sortierte Liste von allen iterierbaren Elementen gibt, die Sie eingeben (z. B. eine Liste ( [1,2,3]); ein Diktat) {1:2,3:4}, obwohl nur eine sortierte Liste der Schlüssel zurückgegeben wird; eine Menge ( {1,2,3,4) oder ein Tupel ( (1,2,3,4))).

>>> x = [3,2,1]
>>> sorted(x)
[1, 2, 3]
>>> x
[3, 2, 1]

Listen haben auch eine sortMethode, die die Sortierung direkt durchführt (x.sort () gibt None zurück, ändert aber das x-Objekt).

>>> x = [3,2,1]
>>> x.sort()
>>> x
[1, 2, 3]

Beide nehmen auch ein keyArgument an, das aufrufbar sein sollte (Funktion / Lambda), mit dem Sie ändern können, nach was sortiert werden soll.
Um beispielsweise eine Liste von (key,value)Paaren aus einem Diktat zu erhalten, das nach Wert sortiert ist, können Sie den folgenden Code verwenden:

>>> x = {3:2,2:1,1:5}
>>> sorted(x.items(), key=lambda kv: kv[1])  # Items returns a list of `(key,value)`-pairs
[(2, 1), (3, 2), (1, 5)]

12

Sie haben es mit einer Python-Liste zu tun, und das Sortieren ist so einfach wie dies.

my_list = ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']
my_list.sort()

11

Sie können die integrierte sortedFunktion verwenden.

print sorted(['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue'])

4

ListName.sort()wird es alphabetisch sortieren. Sie können reverse=False/Truein den Klammern hinzufügen , um die Reihenfolge der Elemente umzukehren:ListName.sort(reverse=False)


1
Ist das ein Kommentar für Ruby?
Allanberry

3
>>> a = ()
>>> type(a)
<type 'tuple'>
>>> a = []
>>> type(a)
<type 'list'>
>>> a = {}
>>> type(a)
<type 'dict'>
>>> a =  ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue'] 
>>> a.sort()
>>> a
['Eflux', 'Intrigue', 'Sedge', 'Stem', 'Whim', 'constitute']
>>> 
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.