2017-05-01 9 views
0

私はフォルダをループしてファイル名を見つけて、見つかったファイル名を辞書の値に関連づけようとしています。私はうまくいけば各ファイルの辞書の価値を取って、それを別のもののために使うでしょう。単一のリスト値からの対応する辞書キー?

ファイル名を抽出すると、リストとして出力されます。

以下のコードは、私が得るものを正確に示しています。 'fileName'は['2_data']として出力されます。

対応する辞書の値をこのリストの値から見つける必要があります。 "data2"

どうすればいいですか?

# 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) 

私はTypeError: unhashable type: 'list'エラーを取得し、このコードを試してみてください。リストの値を辞書が読み込むものに変換する方法がわかりません。

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

エラー:

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

あなたの質問完全なエラー・トレースを更新することができますしてください:

以下は、この問題を回避しますか?これにより、デバッグが容易になります。 –

答えて

1

(彼らは、エラーメッセージ状態として非ハッシュだから)あなたは辞書のキーとしてリストを使用することはできません。

if csvName[0] in csvdict: 
    print(csvdict[csvName[0]]) 
関連する問題