Ich versuche die folgende Liste zu konvertieren:
list = ['A','B','C']
Zu einem Wörterbuch wie:
dict = {'A':0, 'B':1, 'C':2}
Ich habe versucht, Antworten aus anderen Posts zu finden, die für mich nicht funktionieren. Ich habe vorerst folgenden Code:
{list[i]: i for i in range(len(list))}
Was mir diesen Fehler gibt:
unhashable type: 'list'
Jede Hilfe wird sehr geschätzt. Vielen Dank.
python
dictionary
Ahajib
quelle
quelle
list
als Variablenname verwenden 2.enumerate
Wie gezeigt verwenden{j:i for i,j in enumerate(l)}
list
sind wahrscheinlich Listen, obwohl Sie andere Fehler hätten machen können, wie das Schreibenlist: i
stattlist[i]: i
.Antworten:
Sie können die Indizes einer Liste aus der integrierten Aufzählung abrufen . Sie müssen nur die Indexwertzuordnung umkehren und ein Wörterbuchverständnis verwenden, um ein Wörterbuch zu erstellen
>>> lst = ['A','B','C'] >>> {k: v for v, k in enumerate(lst)} {'A': 0, 'C': 2, 'B': 1}
Ohh, und benenne niemals eine Variable zu einem eingebauten oder einem Typ.
quelle
Verwenden Sie die integrierten Funktionen dict und zip:
>>> lst = ['A','B','C'] >>> dict(zip(lst,range(len(lst))))
quelle
Python
dict
Konstruktor hat eine Fähigkeit , die Liste von zu überführen ,tuple
umdict
mit Schlüssel als erstes Element des Tupels und Wert als zweites Element des Tupels. Um dies zu erreichen, können Sie eine eingebaute Funktion verwenden,enumerate
deren Ausbeutetuple
von(index, value)
.Die Anforderung der Frage ist jedoch genau umgekehrt, dh
tuple
sollte es sein(value, index)
. Dies erfordert also einen zusätzlichen Schritt, um die Tupelelemente umzukehren, bevor sie an den Diktatkonstruktor übergeben werden. Für diesen Schritt können wir Builtin verwendenreversed
und es mit auf jedes Element der Liste anwendenmap
>>> lst = ['A', 'B', 'C'] >>> dict(map(reversed, enumerate(lst))) >>> {'A': 0, 'C': 2, 'B': 1}
quelle
Verwenden Sie nicht
list
als Variablennamen, da dieser von Python reserviert ist. Sie können auch nutzenenumerate
.your_list = ['A', 'B', 'C'] dict = {key: i for i, key in enumerate(your_list)}
quelle
Sie müssen die nicht zerlegbare Liste in ein Tupel konvertieren:
dct = {tuple(key): idx for idx, key in enumerate(lst)}
quelle