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

Alejandro Santos listas en alejolp.com
Mie Oct 5 23:22:40 ART 2011


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



More information about the pyar mailing list