Imaginez que vous disposez de la liste suivante.
keys = ['name', 'age', 'food']
values = ['Monty', 42, 'spam']
Quelle est la manière la plus simple de produire le dictionnaire suivant ?
a_dict = {'name': 'Monty', 'age': 42, 'food': 'spam'}
Imaginez que vous disposez de la liste suivante.
keys = ['name', 'age', 'food']
values = ['Monty', 42, 'spam']
Quelle est la manière la plus simple de produire le dictionnaire suivant ?
a_dict = {'name': 'Monty', 'age': 42, 'food': 'spam'}
Il convient de noter que dictionary = {zip(keys, values)}
ne fonctionnera pas. Vous devez déclarer explicitement comme dict(...)
Je ne sais pas pourquoi vous vous attendez à ce que ce soit le cas, @FernandoWittmann. {thing}
est un sucre syntaxique permettant de construire un set()
contenant un élément. {*iterable}
est un sucre syntaxique permettant de construire un set
contenant plusieurs éléments. {k:v}
o {**mapping}
sera construire un dict
mais c'est syntaxiquement très différent.
Merci pour le commentaire Dan. Vous avez raison. Ma confusion s'est produite parce que j'utilise habituellement le sintax {}
pour les dictionnaires. En fait, si nous essayons type({})
le résultat est dict
. Mais en effet, si nous essayons type({thing})
alors la sortie est set
.
Essayez ça :
>>> import itertools
>>> keys = ('name', 'age', 'food')
>>> values = ('Monty', 42, 'spam')
>>> adict = dict(itertools.izip(keys,values))
>>> adict
{'food': 'spam', 'age': 42, 'name': 'Monty'}
Dans Python 2, il est également plus économique en termes de consommation de mémoire par rapport à zip
.
Vrai pour Python2, mais dans Python 3, zip
est déjà économique en termes de consommation de mémoire. docs.python.org/3/library/functions.html#zip En fait, vous pouvez voir que six
utilise zip
dans Python 3 pour remplacer itertools.izip
dans Python 2 pythonhosted.org/six .
Si vous avez besoin de transformer des clés ou des valeurs avant de créer un dictionnaire, alors un fichier expression de générateur pourrait être utilisé. Exemple :
>>> adict = dict((str(k), v) for k, v in zip(['a', 1, 'b'], [2, 'c', 3]))
Jetez un coup d'œil Codez comme un pythoniste : Python idiomatique .
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.