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?

Était-ce utile?

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
scroll top