2013-12-12 24 views
5

Ich habe ein Modul, mit dem Benutzer 10 Wörter eingeben, alphabetisch sortieren und anzeigen können. Bei der Verwendung der Sortierfunktionen werden großgeschriebene Wörter zuerst verwendet, also habe ich sort (list, key = str.lower) verwendet, aber die Ausgabe ist immer noch falsch. Code und Fehler, unten:Sortierung ohne Sortierung mit Sortierung (Liste, Schlüssel = Str.Loer)

def words_function(): 

    words = [input("Enter 10 words, one at a time: ") for i in range(10)] 
    sorted(words, key=str.lower) 
    print("Alphabetized, your words are: ", words) 

    userSearch = input("What word would you like to search for?") 

    if userSearch in words: 
     print("Found!") 
    else: 
     print("Not Found!")  

words_function() 

Und es gibt diese Reihenfolge: [ 'Aardvark', 'Koks', 'Schreibtisch', 'Zippy', 'zappy', 'Fernsehen', 'Bordell', " Buch ',' Dad ',' Hund ']

Welches, letztes Mal nahm ich Englisch, war nicht alphabetisch = p. Was muss ich sonst zu meiner Sortierung hinzufügen oder ändern, damit sie in alphabetischer Reihenfolge erscheint, wobei ignoriert wird, ob das Wort Klein- oder Großbuchstaben ist, und nur nach Alphabet sortiert wird?

Aardvark, Buch, Bordell, Koks, Dad, Schreibtisch, Hund, Fernseher, zappy, Zippy

Antwort

5

sortedkehrt die sortierte Liste. Es ändert die Liste nicht an Ort und Stelle. Sie werden die sortierten Liste speichern, müssen irgendwo

words = sorted(words, key=str.lower) 

Auf Python 2,6

>>> words= ['Aardvark', 'coke', 'Desk', 'Zippy', 'zappy', 'Television', 'brothel', 'book', 'Dad', 'dog'] 
>>> sorted(words,key=str.lower) 
['Aardvark', 'book', 'brothel', 'coke', 'Dad', 'Desk', 'dog', 'Television', 'zappy', 'Zippy'] 
>>> words 
['Aardvark', 'coke', 'Desk', 'Zippy', 'zappy', 'Television', 'brothel', 'book', 'Dad', 'dog'] 
>>> words = sorted(words,key=str.lower) 
>>> words 
['Aardvark', 'book', 'brothel', 'coke', 'Dad', 'Desk', 'dog', 'Television', 'zappy', 'Zippy'] 
+0

Sie haben Recht, tut mir leid. Sollte vor dem Weitergehen Kaffee trinken SO – Anthon

+0

Das funktioniert! Vielen Dank! =) Ich würde upvote, aber ich bin zu viel von einem Noob, es wird mich nicht lassen. Jetzt ... in meiner Suchfunktion, kann ich es so machen, dass sie "Aardvark" eingeben können und es wird gefunden gefunden, obwohl es nicht großgeschrieben wird, wenn sie danach suchen? – nickg131

+0

Sorry, ich hätte angeben sollen, ich benutze 3.3.2, also funktioniert die Antwort von RedBaron. – nickg131

1
sorted(words, key=cmp_to_key(locale.strcoll)) 
1

Sie Methode verwenden können (build-in-Liste)

list.sort()  

Es sortiert und Änderungsliste

+0

Dies wird nicht nach Groß-/Kleinschreibung sortiert. 'list.sort()' wird Großbuchstaben vor Kleinbuchstaben setzen. 'sorted (words, key = str.lower)' ist in dieser Hinsicht überlegen, außer dass Sie die Ausgabe erfassen müssen. – Dannid