使用JSON序列化字典

时间:2017-01-31 21:55:06

标签: python json dictionary serialization dump

所以我试图让JSON转储从Python中处理过的CSV创建的字典。

创建字典的方法:

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:class' collections.defaultdict'不是JSON可序列化"

我哪里错了?为什么我不能将这个字典存储在内存中?有没有人有我可以使用的解决方法?

非常感谢你的时间和时间。救命, 如果需要进一步澄清,请告诉我。

1 个答案:

答案 0 :(得分:1)

这一行:

dict = defaultdict

错了。要声明包含列表的defaultdict,您必须编写:

dict = defaultdict(list)

但是你无论如何都不需要deafultdict,因为你自己正在处理初始化。我也不会将dict用作变量名,因此我只需将该行替换为:

mydict = {}

并确保引用dict的所有命令现在都引用mydict