Création d'un dictionnaire à partir de deux iterables et en consommant les deux
-
12-10-2019 - |
Question
Supposons que j'ai deux listes et je veux faire un dictionnaire d'eux. Comme:
>>> l = [1, 2, 3, 4, 5]
>>> x = ['a', 'b', 'c']
>>> dict(zip(l, x))
{1: 'a', 2: 'b', 3: 'c'}
Cela fonctionne comme je le veux et depuis les listes ne sont pas de la même longueur, les éléments 4
et 5
sont laissés et il n'y a pas de valeur correspondante pour eux. Cela est comme prévu.
Mais si je veux une valeur, disons None
pour les clés l
? Je veux que la sortie soit:
{1: 'a', 2: 'b', 3: 'c', 4: None, 5: None}
L'une des solutions que je pensais itérer sur les deux, comparer leurs longueurs et append None
si nécessaire. J'ai une solution qui fonctionne aussi, mais je me demandais si cela peut être fait d'une manière beaucoup plus facile et plus court peut-être?
La solution
Utilisez
dict(itertools.izip_longest(l, x))
# {1: 'a', 2: 'b', 3: 'c', 4: None, 5: None}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow