1265 Stimmen

Wie kann ich in Python die Schlüssel eines Wörterbuchs als Liste zurückgeben?

Mit Python 2.7 kann ich Wörterbuch Schlüssel, Werte oder Items als eine Liste erhalten:

>>> newdict = {1:0, 2:0, 3:0}
>>> newdict.keys()
[1, 2, 3]

Mit Python >= 3.3 bekomme ich:

>>> newdict.keys()
dict_keys([1, 2, 3])

Wie erhalte ich eine einfache Liste von Schlüsseln mit Python 3?

26voto

cs95 Punkte 325143

Wenn Sie die Schlüssel separat speichern müssen, gibt es hier eine Lösung, die weniger Tipparbeit erfordert als jede andere bisher vorgestellte Lösung, die Erweitertes Iterable Unpacking (Python3.x+) verwendet:

newdict = {1: 0, 2: 0, 3: 0}
*k, = newdict

k
# [1, 2, 3]

Operation

Anzahl der Zeichen

k = list(d)

9 Zeichen (ohne Leerzeichen)

k = [*d]

6 Zeichen

*k, = d

5 Zeichen

16voto

Cas Punkte 5426

Die Umwandlung in eine Liste ohne Verwendung der keys-Methode macht den Code übersichtlicher:

list(newdict)

Und beim Durchlaufen von Dictionaries ist keys() nicht erforderlich:

for key in newdict:
    print key

Es sei denn, Sie möchten es innerhalb der Schleife ändern, was die Erstellung einer Liste von Schlüsseln im Voraus erfordern würde:

for key in list(newdict):
    del newdict[key]

In Python 2 gibt es einen geringfügigen Leistungsgewinn bei Verwendung von keys().

12voto

Devil Punkte 401

Ja, Es gibt eine bessere und einfachere Möglichkeit, dies in python3.X zu tun


Verwenden Sie die integrierte list() Funktion

#Teufel
newdict = {1:0, 2:0, 3:0}
key_list = list(newdict)
print(key_list) 
#[1, 2, 3]

6voto

Rahul Punkte 315

Ich kann mir 2 Möglichkeiten vorstellen, wie wir die Schlüssel aus dem Wörterbuch extrahieren können.

Methode 1: - Um die Schlüssel mit der Methode .keys() zu erhalten und sie dann in eine Liste umzuwandeln.

some_dict = {1: 'eins', 2: 'zwei', 3: 'drei'}
list_of_keys = list(some_dict.keys())
print(list_of_keys)
-->[1,2,3]

Methode 2: - Um eine leere Liste zu erstellen und dann die Schlüssel durch eine Schleife der Liste hinzuzufügen. Du kannst mit dieser Schleife auch die Werte erhalten (verwende .keys() nur für Schlüssel und .items() für die Extraktion von Schlüsseln und Werten).

list_of_keys = []
list_of_values = []
for key,val in some_dict.items():
    list_of_keys.append(key)
    list_of_values.append(val)

print(list_of_keys)
-->[1,2,3]

print(list_of_values)
-->['eins','zwei','drei']

5voto

Giuppox Punkte 1383

Jenseits der klassischen (und wahrscheinlich korrekteren) Methode, dies zu tun (some_dict.keys()), gibt es auch eine etwas "coole" und sicherlich interessantere Methode, dies zu tun:

some_dict = { "foo": "bar", "cool": "python!" }
print( [*some_dict] == ["foo", "cool"] )         # True  

Hinweis: Diese Lösung sollte nicht in einer Entwicklungsumgebung verwendet werden; Ich habe sie hier nur gezeigt, weil ich sie von der *-Operator-über-dictionary-Seite aus recht interessant fand. Außerdem bin ich mir nicht sicher, ob es sich um ein dokumentiertes Feature handelt oder nicht, und sein Verhalten könnte sich in späteren Versionen ändern :)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X