Do you need any help?

sort usando come key str.count() non funziona

T
Tobia (1580 points)
1 9 18
asked Jan 30, 2021 in Programmare in Python by Tobia (1,580 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è?
97 views

1 Answer

Best answer
O
Oakandrew (6400 points)
4 26 63
answered Jan 30, 2021 by Oakandrew (6,400 points)
selected Jan 30, 2021 by Tobia

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à.