[pyar] como ordenar y "limpiar" una lista de diccionarios

Otto Federico Wald ofwald en gmail.com
Jue Oct 6 09:32:19 ART 2011


2011/10/5 Alejandro Santos <listas en alejolp.com>

> 2011/10/5 Otto Federico Wald <ofwald en gmail.com>:
> > Tengo una lista de diccionarios, cada diccionario con unas cuantas keys y
> > quiero limpiarla de la siguiente manera:
> > Si dos o más diccionarios tienen el mismo valor para la key 'b', quiero
> > quedarme solo con aquel con key 'a' mayor.
> > o sea pasar de esto:
> > valores_inicio=[{a:1, b:2}, {a:2, b:3}, {a:3, b:3}, {a:4, b:3}, {a:5 ,
> b:4}]
> > a esto:
> > valores_final=[{a:1, b:2}, {a:4, b:3}, {a:5 , b:4}]
> > Alguna sugerencia para hacerlo?
>
> Acá va una versión O(n):
>
> >>> valores_inicio=[{'a':1, 'b':2}, {'a':2, 'b':3}, {'a':3, 'b':3}, {'a':4,
> 'b':3}, {'a':5 , 'b':4}]
> >>> valores_tmp = {}
> >>> for x in valores_inicio:
> ...     if x['b'] not in valores_tmp or x['a'] > valores_tmp[x['b']]['a']:
> ...             valores_tmp[x['b']] = x
> ...
> >>> valores_final = valores_tmp.values()
> >>> valores_final
> [{'a': 1, 'b': 2}, {'a': 4, 'b': 3}, {'a': 5, 'b': 4}]
>
> --
> Alejandro Santos
>


Gracias!
Voy a probar con esta versión también.
Saludos







> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20111006/99bbc950/attachment.html>


More information about the pyar mailing list