HOWTO · Python
Comment obtenir la première clé dans un dictionnaire Python
Apprenez à obtenir la première clé produite par un itérateur de dictionnaire Python avec next(), la conversion en liste, une boucle for et une valeur par défaut sûre pour les dictionnaires vides.
Sur cette page
Pour obtenir la première clé produite par un dictionnaire Python, appelez next(iter(my_dict)). Cela lit une clé directement depuis l’itérateur du dictionnaire. Dans cet exemple, le dictionnaire contient un nom et une ville, et le programme affiche la première clé produite :
my_dict = {"name": "Ada", "city": "London"}
first_key = next(iter(my_dict))
print(first_key)
Ce que « première » signifie dans un dictionnaire
Un dictionnaire ne fournit pas d’indexation numérique pour les clés. Ici, « première » désigne la première clé produite lorsque Python itère sur le dictionnaire. Pour un dictionnaire ordonné, l’itération suit son ordre d’insertion, donc la première clé est celle insérée le plus tôt. Si un mapping utilise un ordre d’itération différent, « première » suit le comportement d’itération de ce mapping. Cette définition décrit le résultat de l’itération ; elle ne suppose pas que chaque mapping ordonne ses clés de la même manière.
L’itération sur un dictionnaire produit les clés par défaut. Vous pouvez donc passer le dictionnaire directement à iter() ou à une boucle for. Vous n’avez pas besoin d’appeler d’abord keys(). La méthode my_dict.keys() renvoie une vue dynamique des clés lorsque vous devez inspecter ou réutiliser cette vue séparément.
Obtenir la première clé avec next()
Utilisez iter() pour créer un itérateur sur le dictionnaire, puis next() pour récupérer son élément suivant. Comme un itérateur de dictionnaire produit des clés, cette approche lit une clé sans construire une liste séparée de toutes les clés. Pour un dictionnaire non vide, c’est le choix concis lorsque vous n’avez besoin que d’une seule clé :
my_dict = {"name": "Ada", "city": "London"}
first_key = next(iter(my_dict))
print(first_key)
La valeur de first_key est la première clé produite par l’itération. next() accepte également une valeur par défaut facultative, ce qui est utile lorsque le dictionnaire peut ne contenir aucune clé. La dernière section présente cette forme.
Obtenir la première clé avec list()
Si vous avez également besoin des clés sous forme de liste, convertissez le dictionnaire en liste et sélectionnez l’index 0. Un dictionnaire passé à list() produit ses clés, il n’est donc pas nécessaire d’appeler d’abord keys() :
my_dict = {"name": "Ada", "city": "London"}
first_key = list(my_dict)[0]
print(first_key)
Cette conversion matérialise chaque clé avant d’en sélectionner une. Utilisez l’approche par itérateur lorsque vous n’avez besoin que d’une seule clé. La conversion en liste est utile lorsque la liste résultante sera également indexée, découpée ou utilisée dans une autre opération de liste. L’index 0 exige que la liste contienne une clé ; cette forme ne convient donc pas lorsque le dictionnaire peut être vide, sauf si vous le vérifiez au préalable.
Obtenir la première clé avec une boucle for
Une boucle for itère directement sur les clés du dictionnaire. Affectez la première clé, puis utilisez break pour vous arrêter après cette itération :
my_dict = {"name": "Ada", "city": "London"}
for key in my_dict:
first_key = key
break
print(first_key)
Cette approche convient au code qui utilise déjà une boucle ou qui doit effectuer une opération avec la clé avant de s’arrêter. Elle évite de convertir toutes les clés en liste. La boucle n’a pas besoin de items() lorsque la valeur n’est pas utilisée. Si le dictionnaire ne contient aucune clé, le corps de la boucle ne s’exécute jamais ; le code qui utilise first_key ensuite doit tenir compte de cette possibilité.
Gérer un dictionnaire vide
Appeler next(iter(my_dict)) lorsque le dictionnaire n’a aucune clé lève StopIteration. Passez un second argument à next() pour renvoyer une valeur de repli à la place :
my_dict = {}
first_key = next(iter(my_dict), None)
print(first_key)
Ici, None est la valeur de repli. Choisissez une valeur par défaut qui ne peut pas être confondue avec une clé de dictionnaire valide. Si None peut être une clé dans vos données, créez un objet sentinelle unique et utilisez-le comme valeur par défaut :
my_dict = {"name": "Ada", "city": "London"}
sentinel = object()
first_key = next(iter(my_dict), sentinel)
if first_key is sentinel:
print("No keys")
else:
print(first_key)
L’approche par liste avec list(my_dict)[0] n’a pas d’argument par défaut et lève IndexError lorsqu’il n’y a aucune clé. Utilisez next(iter(my_dict), default) lorsqu’une valeur de repli en ligne rend le comportement en cas d’entrée vide plus facile à gérer.