2017-01-31 9 views
-1

私は、処理済みのCSVから作成した辞書をPythonでJSONダンプしようとしています。辞書を作成するためのJSONを使用したシリアライズ

方法:辞書をダンプする

def createUUIDDocIDLink(path): 
    dict = defaultdict 
    with open(path) as citTSV: 
     header = 0 
     for line in csv.reader(citTSV, dialect = "excel-tab"): 
     if header > 0 and line[1] not in dict: 
      dict[line[1]] = [line[0]] 
     elif header > 0 and line[1] in dict: 
      dict[line[1]].append(line[0]) 
     header += 1 
    return dict 

は方法:

def dumpCreateUUIDDocIDLink(): 
    with open("D:/Coding/FE_InOut/dumpUUIDDocIDLookup",'w') as ULookup: 
     output = json.dump(createUUIDDocIDLink("D:/Coding/FE_InOut/ipcr.tsv"),ULookup) 
    return output 

私が受けてるのエラーは次のとおりです。

"はTypeError(のrepr(O)+を上げます" JSONはシリアライズできません ")

TypeError: 'collections.defaultdict'クラスがJSONではありませんse私は間違っていますか?なぜこの言葉を記憶に入れられないのですか?誰も私が使用できる回避策がありますか?

ありがとうございました&ヘルプ、 もっと明確にする必要がある場合はお知らせください。

+0

何かが間違っていると思いますか? –

+0

'json.dump'は何も返さないので、' output'に代入して返すことは無用です。 – Mikk

+0

関数の本体をインデントする必要があります。私はそれが実際のコードではなくコピーエラーであると仮定します。 – Barmar

答えて

1

このライン:

dict = defaultdict 

が間違っています。あなたが書かなければならないリストを含むdefaultdict宣言するには:

dict = defaultdict(list) 

をしかし、あなたは初期化自分の世話をしているので、あなたは、とにかくdeafultdictを必要としません。私はまた、変数名としてdictを使用することはありませんので、私はちょうどで行を置き換えたい:

mydict = {} 

dictを参照するすべてのコマンドは、今mydictを参照していることを確認します。

+0

応答Mikkのおかげで、私は今あなたの提案をテストします。 – lel23

+0

こんにちは、あなたの提案はすぐに働いた - あなたの助けを大変ありがとうございます – lel23

+0

よろしくお願いします! – Mikk

関連する問題