2013-12-12 12 views
5

Ho un modulo progettato per consentire agli utenti di inserire 10 parole, poi li alfabetizzare, e li visualizza. Usare le funzioni di ordinamento per prima cosa mette le parole in maiuscolo, quindi ho usato sort (list, key = str.lower) ma l'output è ancora errato. Codice, ed errori, di seguito:Caso ordinamento insensitive con sort (elenco, key = str.lower)

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() 

Ed emette questo ordine: [ 'Aardvark', 'coca', 'scrivania', 'Zippy', 'Zappy', 'Televisione', 'bordello', ' libro', 'papà', 'cane']

Il che, l'ultima volta ho preso l'inglese, non era alfabetico = p. Cos'altro devo aggiungere al mio tipo, o cambiare, per farlo uscire in buone ordine alfabetico, ignorando se la parola è minuscolo o del capitale, e solo l'ordinamento in base a alfabetizzazione?

Aardvark, libro, bordello, coke, papà, Scrivania, cane, Televisione, Zappy, Zippy

risposta

5

sortedrendimenti la lista ordinata. Non modifica l'elenco sul posto. Dovrete memorizzare l'elenco ordinato da qualche parte

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

su 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

Hai ragione, mi dispiace. Dovresti bere un caffè prima di andare SO – Anthon

+0

Questo funziona! Grazie! =) Avrei votato, ma sono troppo noob, non me lo permette. Ora ... nella mia funzione di ricerca, posso fare in modo che possano digitare "Aardvark" e tornerà Trovato, anche se non è in maiuscolo quando cercano per esso? – nickg131

+0

Mi dispiace che avrei dovuto specificare, sto usando 3.3.2, quindi la risposta data da RedBaron funziona. – nickg131

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

È possibile utilizzare il metodo (lista build-in)

list.sort()  

Si ordina e lista modifiche

+0

Questo non ordinerà caso-insensibile. 'list.sort()' metterà le lettere maiuscole prima delle lettere minuscole. 'sorted (words, key = str.lower)' è superiore a questo riguardo, tranne per il fatto che è necessario acquisire l'output. – Dannid

Problemi correlati