2017-05-01 3 views
0

Ich durchlaufe einen Ordner, finde den Dateinamen und versuche dann, den gefundenen Dateinamen mit einem Wert in einem Wörterbuch zu verknüpfen. Ich werde dann hoffentlich den Wörterbuchwert für jede Datei nehmen und für etwas anderes verwenden.Entsprechender Wörterbuchschlüssel aus einem Listenwert?

Beim Extrahieren des Dateinamens kommt es als Liste heraus.

Der Code unten zeigt genau, was ich bekomme. 'Dateiname' wird als ['2_Daten'] ausgegeben.

Ich muss den entsprechenden Wörterbuchwert zu diesem Listenwert finden. "data2"

Wie würde ich darüber gehen?

# dict 
csvdict = ({"1_Data" : "data1", 
      "_2_data" : "data2",}) 
# example name 
nameData = 'C:/folder/1/2\3\3\CSV Files\\2_data.csv' 


csvName = (re.findall('CSV Files[^\w]+([\w\d\s-]+)', nameData)) 

print(csvName) 

wenn ich diesen Code versuchen, erhalte ich eine TypeError: unhashable type: 'list' Fehler. Ich weiß nicht, wie man den Listenwert in etwas umwandelt, das das Wörterbuch lesen wird.

if csvName in csvdict: 
    print(csvdict[csvName]) 

Fehler:

TypeError         Traceback (most recent call last) 
<ipython-input-71-86fc5d1ebca7> in <module>() 
    22 #csvdict[fileName] 
    23 #DICTIONARY ATTMEPT********************************************************** 
---> 24 if csvName in csvdict: 
    25  print(csvdict[csvName]) 
    26 

TypeError: unhashable type: 'list' 
+0

Können Sie Ihre Frage, die den vollständigen Fehlertrace aktualisieren Sie bitte? Dies erleichtert das Debugging. –

Antwort

1

Sie keine Liste als Wörterbuch-Schlüssel verwenden können (weil sie unhashable als die Fehlermeldung Staaten sind).

Die folgende vermeidet das Problem:

if csvName[0] in csvdict: 
    print(csvdict[csvName[0]]) 
Verwandte Themen