A question was asked here on SO, pochi minuti fa, sull'ordinamento delle chiavi del dizionario in base ai loro valori.Ordinamento del dizionario utilizzando operator.itemgetter
Ho appena letto sul metodo operator.itemgetter
di ordinare alcuni giorni indietro e ho deciso di provarlo, ma non sembra funzionare.
Non che io abbia problemi con le risposte presentate alle domande, volevo solo provare con operator.itemgetter
.
Così il dict era:
>>> mydict = { 'a1': ['g',6],
'a2': ['e',2],
'a3': ['h',3],
'a4': ['s',2],
'a5': ['j',9],
'a6': ['y',7] }
ho provato questo:
>>> l = sorted(mydict.itervalues(), key=operator.itemgetter(1))
>>> l
[['e', 2], ['s', 2], ['h', 3], ['g', 6], ['y', 7], ['j', 9]]
E questo funziona come voglio io. Tuttavia, dato che non ho il dizionario completo (mydict.itervalues()
), ho provato questo:
>>> complete = sorted(mydict.iteritems(), key=operator.itemgetter(2))
Questo non funziona (come mi aspettavo che).
Quindi, come si ordina il dict utilizzando operator.itemgetter
e si chiama itemgetter
sulla coppia di chiavi nidificate - valore.
Potete spiegare questo: 'operator.itemgetter (1) (v))'? – user225312
@ A: 'operator.itemgetter (1) (v)' è equivalente a 'v [1]'. Puoi sostituire qualsiasi occorrenza di 'a [b]' con 'operator.itemgetter (b) (a)', ma questo non è il modo in cui * I * ha capito la tua domanda :) –
Creare un itemgetter è relativamente costoso. Questo crea uno per ogni chiave nel dict –