Tengo una configuración diccionario de Python como talOrdenación de las claves de diccionario basado en sus valores
mydict = { 'a1': ['g',6],
'a2': ['e',2],
'a3': ['h',3],
'a4': ['s',2],
'a5': ['j',9],
'a6': ['y',7] }
Tengo que escribir una función que devuelve las llaves ordenados en una lista, en función de la columna de su clasificación en lo que por ejemplo si estamos en la clasificación mydict [clave] [1] (ascendente)
que debería recibir una lista de vuelta al igual que
['a2', 'a4', 'a3', 'a1', 'a6', 'a5']
en su mayoría se trabaja, además de cuando se tiene columnas de la misma VA lue para llaves múltiples, ej. 'a2': ['e', 2] y 'a4': ['s', 2]. En este caso se devuelve la lista al igual que
['a4', 'a4', 'a3', 'a1', 'a6', 'a5']
Ésta es la función he definido
def itlist(table_dict,column_nb,order="A"):
try:
keys = table_dict.keys()
values = [i[column_nb-1] for i in table_dict.values()]
combo = zip(values,keys)
valkeys = dict(combo)
sortedCols = sorted(values) if order=="A" else sorted(values,reverse=True)
sortedKeys = [valkeys[i] for i in sortedCols]
except (KeyError, IndexError), e:
pass
return sortedKeys
Y si quiero ordenar en la columna de números, por ejemplo, que se llama así por lo
sortedkeysasc = itmethods.itlist(table,2)
¿Alguna sugerencia?
Paul
sólo tiene que utilizar el 'key' kwarg de la función de clasificación – ulidtko