Hoe woordenboeksleutels als een lijst in Python te krijgen
-
dict.keys()
om Python woordenboeksleutels te krijgen - Lussen om Python-woordenboeksleutels te krijgen
- Maak een lijst van begrippen om de sleutels van het Python Dictionary te krijgen
-
Python woordenboek uitpakken
*
operator om de sleutels te krijgen - Looptijdprestaties vergelijken

Het bekijken van woordenboeksleutels als een reeks is een alledaags gebruik in Python-programmering.
Er zijn verschillende benaderingen om dit te bereiken, elk met verschillende prestatiekenmerken.
dict.keys()
om Python woordenboeksleutels te krijgen
De dict.keys()
functie keert terug dict_keys
- een overzichtelijke weergave van de toetsen in het woordenboek.
>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}
>>> state_capitals.keys()
dict_keys(['California', 'Pennsylvania', 'Texas'])
Je kan dict_keys
rechtstreeks overgaan zonder het in een lijst om te zetten. Voor veel gebruiksscenario’s dict_keys
kan het worden verwijderd in plaats van een lijst in API’s, en het werkt.
>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}
>>> for state in state_capitals.keys():
... print(state)
...
California
Pennsylvania
Texas
Als u strikt aan woordenboekwoorden moet werken, zoals in lijsten, als u bijvoorbeeld een index wilt kunnen gebruiken om een bepaalde sleutel uit de reeks te lezen, moet u deze dict_keys
eerst in een lijst converteren.
>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}
>>> list(state_capitals.keys())
['California', 'Pennsylvania', 'Texas']
Merk op dat bellen dict.keys()
optioneel is als u sleutels als een lijst wilt ontvangen. Omdat Python-woordenboeken over hun sleutels kunnen worden herhaald, kan je een woordenboek zelf doorgeven aan een lijstconstructeur.
>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}
>>> list(state_capitals)
['California', 'Pennsylvania', 'Texas']
Lussen om Python-woordenboeksleutels te krijgen
Een eigenaardige eigenschap van woordenboeken in Python is dat wanneer u ze herhaalt, u hun sleutels herhaalt. Zo kan je alle woordenboeksleutels eenvoudig verzamelen door erover te itereren.
>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}
>>> keys = []
>>> for key im state_capitals:
... keys.append(key)
...
>>> keys
['California', 'Pennsylvania', 'Texas']
Maak een lijst van begrippen om de sleutels van het Python Dictionary te krijgen
Een syntactische verbetering ten opzichte van het gebruik van lussen kan het gebruik van Pythons lijstbegrippen zijn . Met lijstbegrippen kan je de bovenstaande lus in één lijn samenvoegen.
>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}
>>> keys = [key for key in state_capitals]
>>> keys
['California', 'Pennsylvania', 'Texas']
Python woordenboek uitpakken *
operator om de sleutels te krijgen
Vanaf Python 3.5 kunnen we de operator voor uitpakken *
gebruiken om woordenboeksleutels te behouden. Deze functie werd geïntroduceerd met PEP 448 - Aanvullende uitpakveralgemeningen.
>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}
>>> keys = [*state_capitals]
>>> keys
['California', 'Pennsylvania', 'Texas']
Het voordeel van deze aanpak is dat u uw woordenboeksleutels kan jeitpakken in andere collecties buiten lijsten, zoals tupels of sets.
>>> 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'}
Looptijdprestaties vergelijken
De runtime-prestaties van elk van de bovenstaande benaderingen variëren.
>>> 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
Zoals uit de bovenstaande tijdstippen volgt, is de *
operator voor het uitpakken het snelst.
Geef er de voorkeur aan, tenzij u een goede reden hebt om terug te vallen op een van de andere benaderingen.
Gerelateerde Artikelen - Python Dictionary
- Hoe te controleren of een sleutel voorkomt in een woordenboek
- Alle bestanden van een map ophalen
- Een woordenboek sorteren op waarde
- Hoe twee woordenboeken samen te voegen in Python 2 en 3
- Een element verwijderen uit een Python-woordenboek