Sé que ya hay toneladas de preguntas sobre las listas/diccionarios de python, pero parece que no puedo encontrar una que ayude en mi caso, y estoy buscando la solución más eficiente como Voy a ordenar un conjunto de datos bastante grande.Ordenando un diccionario de tuplas en Python
Mis datos básicamente tiene este aspecto en la actualidad
a = {'a': (1, 2, 3), 'b': (3, 2, 1)}
básicamente estoy creando una lista de palabras en el que almaceno cada palabra junto con algunas estadísticas sobre ella (n, Sigma (x), Sigma (x^2))
Quiero ordenarlo en función de una estadística en particular. Hasta ahora he estado intentando algo en la línea de:
b = a.items()
b.sort(key = itemgetter(1), reverse=True)
No estoy seguro de cómo controlar qué índice se ordenan en función de su eficacia, cuando una lista de tuplas de tuplas? Supongo que efectivamente necesito anidar dos operaciones de cambio de elemento pero no estoy seguro de cómo hacer esto.
Si hay una mejor estructura de datos que debería usar en su lugar, hágamelo saber. ¿Debo quizás crear una pequeña clase/estructura y luego usar una función lambda para acceder a un miembro de la clase?
Muchas gracias
sí, gracias perfectas! Sin embargo, leí en alguna parte que itemgetter es más rápido que usar una función lambda porque se compiló en C? Si no puedo usar itemgetter, esta solución está bien. –
No se preocupe por el rendimiento hasta que tenga un programa en funcionamiento, completado con pruebas unitarias. Si el programa final * correcto * es demasiado lento, perfíllo y optimice los bits lentos. –
buen punto :) Podría reescribirlo en C si es demasiado lento de todos modos, gracias por los indicadores :) –