Comment obtenir des clés de dictionnaire sous forme de liste en Python
-
dict.keys()
pour obtenir les clés du dictionnaire Python - Boucles pour obtenir les clés du dictionnaire Python
- Lister les compréhensions pour obtenir les clés du dictionnaire Python
-
Décompression du dictionnaire Python opérateur
*
pour obtenir les clés - Comparaison des performances d’exécution
Obtenir une vue des clés du dictionnaire sous forme de séquence est un cas d’utilisation quotidien en programmation Python.
Il existe plusieurs approches pour y parvenir, chacune ayant des caractéristiques de performance différentes.
dict.keys()
pour obtenir les clés du dictionnaire Python
La fonction dict.keys()
retourne dict_keys
- une vue itérable des clés du dictionnaire.
>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}
>>> state_capitals.keys()
dict_keys(['California', 'Pennsylvania', 'Texas'])
Vous pouvez itérer sur dict_keys
directement sans le convertir en une liste.
Pour beaucoup de cas d’utilisation, dict_keys
peut être abandonné au lieu d’une liste dans les APIs, et cela fonctionnera.
>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}
>>> for state in state_capitals.keys():
... print(state)
...
California
Pennsylvania
Texas
Si vous avez besoin de travailler sur des clés de dictionnaire strictement comme sur des listes, par exemple, si vous voulez
pour pouvoir utiliser un index pour lire une clé particulière de la séquence, vous devez convertir
dict_keys
dans une liste d’abord.
>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}
>>> list(state_capitals.keys())
['California', 'Pennsylvania', 'Texas']
Notez que l’appel à dict.keys()
est optionnel si vous voulez obtenir des clés sous forme de liste.
Comme les dictionnaires Python sont itérables sur leurs clés, vous pouvez passer un
dans un constructeur de liste.
>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}
>>> list(state_capitals)
['California', 'Pennsylvania', 'Texas']
Boucles pour obtenir les clés du dictionnaire Python
Une propriété particulière des dictionnaires en Python est que lorsque vous itérez sur eux,
vous itérez de leurs clés.
Ainsi vous pouvez collecter toutes les clés du dictionnaire simplement en itérant par dessus.
>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}
>>> keys = []
>>> for key im state_capitals:
... keys.append(key)
...
>>> keys
['California', 'Pennsylvania', 'Texas']
Lister les compréhensions pour obtenir les clés du dictionnaire Python
Une amélioration syntaxique par rapport à l’utilisation des boucles peut être obtenue en utilisant les listes de compréhension de Python.
Avec les compréhensions de liste, vous pouvez condenser la boucle ci-dessus en une seule ligne.
>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}
>>> keys = [key for key in state_capitals]
>>> keys
['California', 'Pennsylvania', 'Texas']
Décompression du dictionnaire Python opérateur *
pour obtenir les clés
A partir de Python 3.5, nous pouvons utiliser l’opérateur unpacking *
pour mettre la main sur les clés du dictionnaire.
Cette fonctionnalité a été introduite avec PEP 448 - Additional Unpacking Generalizations.
>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}
>>> keys = [*state_capitals]
>>> keys
['California', 'Pennsylvania', 'Texas']
L’avantage de cette approche est que vous pouvez décompresser vos clés de dictionnaire dans d’autres collections que les listes, comme les tuples ou les ensembles.
>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}
>>> keys_tuple = *state_capitals,
>>> keys_tuple
('California', 'Pennsylvania', 'Texas')
>>> keys_set = {*state_capitals}
>>> keys_set
{'California', 'Pennsylvania', 'Texas'}
Comparaison des performances d’exécution
Les performances d’exécution de chacune des approches ci-dessus varient.
>>> from timeit import timeit
>>> timeit("list(state_capitals.keys())", setup="state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}")
0.25394885599962436
>>> timeit("list(state_capitals)", setup="state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}")
0.17995373999929143
>>> timeit("for key in state_capitals: keys.append(key)", setup="keys = []; state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}")
0.25294865500018204
>>> timeit("[key for key in state_capitals]", setup="state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}")
0.2447525150000729
>>> timeit("[*state_capitals]", setup="state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}")
0.0962776809992647
Comme le montrent les temps ci-dessus, l’opérateur de déballage *
est le plus rapide.
Préférez le, à moins que vous n’ayez une bonne raison de vous rabattre sur une des autres approches.
Article connexe - Python Dictionary
- Comment vérifier si une clé existe dans un dictionnaire en Python
- Convertir un dictionnaire en liste en Python
- Comment obtenir tous les fichiers d'un répertoire
- Comment trouver la valeur maximale dans le dictionnaire Python
- Comment trier un dictionnaire Python par valeur
- Comment fusionner deux dictionnaires en Python 2 et 3