[PIPython] Ordinare elementi di una lista
Arianna Microchip
microchip79
Lun 17 Gen 2005 16:42:49 CET
>Ciao Arianna,
><code>
>listanumeri = {}
>numeri = input('Quanti numeri vuoi inserire? ')
>pos = 0
>for n in range(numeri):
> valore = input('Inserisci il numero ' + str(n+1) + ': ')
> if not listanumeri.has_key(valore):
> pos += 1
> listanumeri[valore] = pos
></code>
>
>Se vuoi ottenere la lista delle chiavi fai
>
>lista_valori = d.keys()
>
>Per stanpare chiave e posizione, ordinati per chiave, fai:
>
><code>
>k = listanumeri.keys()
>k.sort()
>
>for i in k:
> print "%d: %d" % (listanumeri[k], k)
></code>
>Supponendo che tu lavori principalmente sulle posizioni relative di
>inserimento, puoi controllare velocemente se ci sono dei duplicati in questo
>modo:
>
><code>
>if not valore in listanumeri:
> listanumeri.append(valore)
></code>
>
veramente ho già risolto in altro modo.
Per non inserire i duplicati (e per non inserire numero superiori a 91) ho fatto:
for n in range(numeri):
while True:
valore = input('Inserisci il numero ' + str(n+1) + ': ')
if valore < 91 :
if not valore in listanumeri : break
print ('Numero già inserito')
else : print('Numero maggiore di 90')
listanumeri.append(valore)
mentre per le ordinare i numeri in basse alle "frequenze" così:
res=list(reversed(sorted((x, i) for i,x in enumerate(occorrenze) if x!= 0)))
print '\n'.join('%d: %d' % (x[1], x[0]) for x in res)
Funzionano entrambi! :)
Grazie lo stesso
More information about the Python
mailing list