Y at-il une manière plus concise de faire cela en Python ?:Quelle est la façon Pythonienne de combiner deux séquences dans un dictionnaire?
def toDict(keys, values):
d = dict()
for k,v in zip(keys, values):
d[k] = v
return d
Y at-il une manière plus concise de faire cela en Python ?:Quelle est la façon Pythonienne de combiner deux séquences dans un dictionnaire?
def toDict(keys, values):
d = dict()
for k,v in zip(keys, values):
d[k] = v
return d
Si keys
'la taille peut être plus grande, alors values
' que vous pouvez ensuite utiliser itertools.izip_longest
(Python 2.6) qui permet de spécifier une valeur par défaut pour le reste des clés:
from itertools import izip_longest
def to_dict(keys, values, default=None):
return dict(izip_longest(keys, values, fillvalue=default))
Exemple:
>>> to_dict("abcdef", range(3), 10)
{'a': 0, 'c': 2, 'b': 1, 'e': 10, 'd': 10, 'f': 10}
REMARQUE: itertools.izip*()
fonctions à la différence des itérateurs de retour de la fonction zip()
pas de listes.
Avec les bonnes réponses que vous avez eues jusqu'à maintenant pour la technique, je ferai remarquer que 'to_dict' est plus Pythonic que 'toDict' quand on nomme une fonction. Voir [PEP 8] (http://www.python.org/dev/peps/pep-0008 "PEP 8") pour les recommandations de style pour l'écriture de code Python. – bignose
+1 pour aider quelqu'un qui est clairement intéressé par le 'chemin'. – physicsmichael
Merci pour le heads-up. Cependant, cela devrait plutôt appartenir à une question wikifiée, à l'instar de "Python coding style guidelines". – guillermooo