Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

sort usando come key str.count() non funziona

T
Tobia (1580 points)
1 12 19
in Programmare in Python by (1.6k points)
ho provato a usare il sort in questo modo :

lista.sort(key=lambda x : lista.count(x))

quello che ho notato è che li ordina, ma se nella lista ci sono due elementi uguali decide di ordinare solo il primo e ignora il secondo elemento.

nel caso in cui invece volessi ordinare con due parametri:

lista.sort(key=lambda x : ( lista.count(x), x ) )

mi ignora il count e ordina solo in base al secondo parametro.

qualcuno sa perchè?
326 views
closed

1 Answer

Best answer
O
Oakandrew (6400 points)
7 27 64
by (6.4k points)
selected by

Salve,

potresti evitare questo problema utlizzando metodo sorted.

Qui potresti vedere in dettaglio perché non ti restituisce il risultato che aspetti: https://docs.python.org/3/library/stdtypes.html#list.sort(precisamente-CPython implementation detail).

Potresti verificare questo con un semplice esempio:

Crea una funzione che restituisce numero di elementi in lista(ovvero count), prima di return metti una semplice print (che stampa lista,elemento). Dopo aver fatto questo chiami sort e sorted, dove invece di lambda metti la funzione creata all'inizio. Vedi cosa ti stamperà.