El día 30 de abril de 2010 13:39, Arnau Sanchez <pyar...@gmail.com> escribió: > 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) >
Ya sabía yo que había soluciones mejores, gracias. > 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. Podrías explicarme esto un poco más, supongo que te refieres a que cuando me encuentre algo así: d = {} for k in [1,2,3,4]: d[k] = k Es mejor hacer: d = dict ((k, k) for k in [1,2,3,4]) Cosa que ahora veo clarísima. -- Saludos Fran _______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/