Tag: dict

  • Python: come ordinare un dizionario [dict] per chiave o per valore

    Python: come ordinare un dizionario [dict] per chiave o per valore

    In Python, i dizionari (dict) sono una struttura dati associativa che associa una chiave ad un valore (k, v):

    d = {}
    d['bart'] = 'marge'
    d['maggie'] = 'homer'
    d['milhouse'] = 'nelson'
    d['lisa'] = 'skinner'
    >>> d
    {'maggie': 'homer', 'lisa': 'skinner', 'bart': 'marge', 'milhouse': 'nelson'}
    

    Esistono due modi di ordinare un dizionario:

      • La modalità “classica” e più conosciuta: ovvero ordinare il dizionario sulla base delle chiavi che lo compongono:
    for k in sorted(d.keys()):
    print k + ' : ' + d[k]
    
    bart : marge
    lisa : skinner
    maggie : homer
    milhouse : nelson
    
      • La modalità meno conosciuta e che ho dovuto ricercare [e che quindi condivido con voi] ovvero quella di ordinare il dizionario sulla base dei valori che sono associati alle chiavi:
    sorted(d.items(), key=lambda(k,v):(v,k))
    >>> [('maggie', 'homer'), ('bart', 'marge'), ('milhouse', 'nelson'), ('lisa', 'skinner')]
    

    Come vedete questa volta abbiamo ottenuto una lista degli elementi ordinati secondo il valore associato ad ogni chiave. Può tornare utile!

    Esistono molteplici versioni di quest’ultima istruzione, ma questa ritengo che sia la più compatta e veloce.