too many values to unpack (expected 2)
Python
Erreur courante
Explication
L'erreur `ValueError: too many values to unpack (expected 2)` survient lors d'un **dépaquetage** où il y a **plus de valeurs** à droite que de variables à gauche. Vous attendez 2 éléments, mais la séquence en contient davantage.
```python
a, b = [1, 2, 3] # 2 variables, mais 3 valeurs
# ValueError: too many values to unpack (expected 2)
```
Causes courantes
- **Plus d'éléments que de variables** dans l'affectation. - **`split()` renvoie plus de morceaux** que prévu (séparateur présent plusieurs fois). - **Ligne CSV** avec une colonne supplémentaire. - **Itération sur un dictionnaire avec `.items()`** vers deux variables alors que la structure est plus complexe.
1. Absorbez le surplus avec *
L'étoile capture tous les éléments restants dans une liste :
a, b, *reste = [1, 2, 3] # a=1, b=2, reste=[3]
premier, *_ = donnees # ne garder que le premier
2. Limitez le découpage avec maxsplit
Pour split, fixez le nombre maximal de coupures :
cle, valeur = "a=b=c".split("=", maxsplit=1) # cle="a", valeur="b=c"
3. Vérifiez la forme des données
parts = ligne.split(",")
if len(parts) == 2:
a, b = parts
else:
print("Ligne inattendue :", ligne)
Comment prevenir cette erreur
- **Utilisez `*reste`** dès que le nombre d'éléments peut varier.
- **Utilisez `maxsplit`** pour découper un nombre fixe de fois.
- Pour le CSV, préférez le module `csv` au `split` manuel.
Besoin d'aide sur votre projet ?
Besoin d'aide sur un probleme technique ? Decrivez-le pour des recommandations.
Nous contacterQuestions frequentes
Quelle différence avec « not enough values to unpack » ?
« too many » = trop de valeurs pour le nombre de variables ; « not enough » = pas assez. Dans les deux cas, alignez le nombre de variables ou utilisez `*reste` pour absorber le surplus.
Comment ne garder que les premiers éléments d'une séquence longue ?
Utilisez l'étoile pour ignorer le reste : `premier, deuxieme, *_ = ma_sequence`. Le `*_` capture et jette tout ce qui suit.