¿Existe una manera más concisa de hacer esto en Python ?:¿Cuál es la manera Pythonic de combinar dos secuencias en un diccionario?
def toDict(keys, values):
d = dict()
for k,v in zip(keys, values):
d[k] = v
return d
¿Existe una manera más concisa de hacer esto en Python ?:¿Cuál es la manera Pythonic de combinar dos secuencias en un diccionario?
def toDict(keys, values):
d = dict()
for k,v in zip(keys, values):
d[k] = v
return d
Si keys
'tamaño puede ser más grande que values
' uno podría usarse itertools.izip_longest
(Python 2.6) que permite especificar un valor predeterminado para el resto de las teclas:
from itertools import izip_longest
def to_dict(keys, values, default=None):
return dict(izip_longest(keys, values, fillvalue=default))
Ejemplo:
>>> to_dict("abcdef", range(3), 10)
{'a': 0, 'c': 2, 'b': 1, 'e': 10, 'd': 10, 'f': 10}
NOTA: itertools.izip*()
funciones a diferencia de los iteradores no retorno zip()
función de listas.
Junto con las respuestas correctas que has tenido hasta ahora para la técnica, señalaré que 'to_dict' es más Pythonic que 'toDict' al nombrar una función. Consulte [PEP 8] (http://www.python.org/dev/peps/pep-0008 "PEP 8") para conocer las recomendaciones de estilo para escribir el código de Python. – bignose
+1 por ayudar a alguien que está claramente interesado 'el camino'. – physicsmichael
Gracias por el aviso. Sin embargo, esto preferiría pertenecer a una pregunta wikified en la línea de "pautas de estilo de codificación de Python". – guillermooo