用 JSON 序列化字典

Serializing Dictionary with JSON

所以我正在尝试 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

我收到的错误是:

"raise TypeError(repr(o) + " 不是 JSON 可序列化")

类型错误:class 'collections.defaultdict' 不是 JSON 可序列化的

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

非常感谢您的宝贵时间和帮助, 如果需要进一步说明,请告诉我。

这一行:

dict = defaultdict

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

dict = defaultdict(list)

但无论如何您都不需要 deafultdict,因为您自己负责初始化。我也不会使用 dict 作为变量名,所以我只是将这一行替换为:

mydict = {}

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