[Python-es] "Reducir" un diccionario usando un subconjunto de claves

Arnau Sanchez pyarnau en gmail.com
Vie Abr 30 13:39:56 CEST 2010


On 30/04/10 13:21, Francisco Javier Cuadrado wrote:

> d = {'nombre:'pepe', 'apellidos':'garcia lopez', 'edad':30,
> 'profesión':'futbolista'}
>
> Del cual quiero obtener otro diccionario que contenga un subconjunto
> de las claves/valores del anterior, por ejemplo quedarme sólo con el
> nombre y los apellidos:
>
> dic_resultante = {'nombre':'pepe', 'apellidos':'garcia lopez'}

Puedes usar una expresión generador + constructor dict():

def dict_filter_keys(d, keys):
     return dict((key, d[key]) for key in keys)

d = {'nombre' :'pepe', 'apellidos':'garcia lopez', 'edad':30,
     'profesion':'futbolista'}

print dict_filter_keys(d, ["nombre", "edad"])
# {'edad': 30, 'nombre': 'pepe'}

Siempre que hagas "inicialización a vacío ([], {}) + bucle + añadir valores" 
estás implementando una solución no-funcional, algo que por norma general hay 
que evitar.



Más información sobre la lista de distribución Python-es