it-swarm.com.de

Wie werden die Buchstaben in einem String in Python alphabetisch sortiert?

Gibt es eine einfache Möglichkeit, die Buchstaben in einer Zeichenfolge in Python alphabetisch zu sortieren?

So für:

a = 'ZENOVW'

Ich würde gerne zurückkehren:

'ENOVWZ'
118
Superdooperhero

Du kannst tun:

>>> a = 'ZENOVW'
>>> ''.join(sorted(a))
'ENOVWZ'
208
K Z
>>> a = 'ZENOVW'
>>> b = sorted(a)
>>> print b
['E', 'N', 'O', 'V', 'W', 'Z']

sorted gibt eine Liste zurück, sodass Sie sie mit join erneut in eine Zeichenfolge umwandeln können:

>>> c = ''.join(b)

welche die Elemente von b zusammen mit einem leeren String '' zwischen jedem Element verbindet.

>>> print c
'ENOVWZ'
76
askewchan

Sorted () - Lösung kann zu unerwarteten Ergebnissen mit anderen Zeichenfolgen führen. 

Liste anderer Lösungen:

Buchstaben sortieren und deutlich machen:

>>> s = "Bubble Bobble"
>>> ''.join(sorted(set(s.lower())))
' belou'

Briefe sortieren und unter Beachtung der Großbuchstaben unterscheiden:

>>> s = "Bubble Bobble"
>>> ''.join(sorted(set(s)))
' Bbelou'

Buchstaben sortieren und Duplikate aufbewahren:

>>> s = "Bubble Bobble"
>>> ''.join(sorted(s))
' BBbbbbeellou'

Wenn Sie das Leerzeichen im Ergebnis entfernen möchten, fügen Sie in diesen Fällen die Funktion strip () hinzu:

>>> s = "Bubble Bobble"
>>> ''.join(sorted(set(s.lower()))).strip()
'belou'
25
Radek

Sie können reduzieren verwenden

>>> a = 'ZENOVW'
>>> reduce(lambda x,y: x+y, sorted(a))
'ENOVWZ'
7
Saquib

der Code kann verwendet werden, um den String in alphabetischer Reihenfolge zu sortieren, ohne eine eingebaute Funktion von Python zu verwenden 

k = input ("Noch eine Zeichenfolge eingeben")

li = []
x = len(k)
for i in range (0,x):
    li.append(k[i])

print("List is : ",li)


for i in range(0,x):
    for j in range(0,x):
        if li[i]<li[j]:
            temp = li[i]
            li[i]=li[j]
            li[j]=temp
j=""

for i in range(0,x):
    j = j+li[i]

print("After sorting String is : ",j)
1
Kanan Joshi

Die Python-Funktionsorted gibt ein ASCII-basiertes Ergebnis für den String zurück.

WRONG: In dem folgenden Beispiel stehen e und d hinter H und W, da es sich um den Wert ASCII handelt.

>>>a = "Hello World!"
>>>"".join(sorted(a))
' !!HWdellloor'

RICHTIG: Um die sortierte Zeichenfolge zu schreiben, ohne die Groß-/Kleinschreibung zu ändern. Verwenden Sie den Code:

>>> a = "Hello World!"
>>> "".join(sorted(a,key=lambda x:x.lower()))
' !deHllloorW'

Wenn Sie alle Satzzeichen und Zahlen entfernen möchten. Verwenden Sie den Code:

>>> a = "Hello World!"
>>> "".join(filter(lambda x:x.isalpha(), sorted(a,key=lambda x:x.lower())))
'deHllloorW'
1
Priyank Arora

Wirklich gut gefallen hat die Antwort mit der Funktion zum Verkleinern (). Hier ist eine weitere Möglichkeit, die Zeichenfolge mithilfe von collectulate () zu sortieren.

from itertools import accumulate
s = 'mississippi'
print(Tuple(accumulate(sorted(s)))[-1])

sortiert (s) -> ['i', 'i', 'i', 'i', 'm', 'p', 'p', 's', 's', 's', 's ]

Tupel (akkumulieren (sortiert)) -> ('i', 'ii', 'iii', 'iiii', 'iiiim', 'iiiimp', 'iiiimpp'), 'iiiimpps', 'iiiimppss', 'iiiimppsss ',' iiiimppssss ')

Wir wählen den letzten Index (-1) des Tupels aus

0
Mono