[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