错误来自publishDB = defaultdict(defaultdict({}))
我想创建一个类似{subject1:{student_id:{assignemt1:marks, assignment2:marks,finals:marks}} , {student_id:{assignemt1:marks, assignment2:marks,finals:marks}}, subject2:{student_id:{assignemt1:marks, assignment2:marks,finals:marks}} , {student_id:{assignemt1:marks, assignment2:marks,finals:marks}}}
的数据库。我试图将其填充为DB[math][10001] = a dict
,然后读出来为d = DB[math][10001]
。因为,我在我办公室的电脑上,我不能尝试不同的模块。在
我这样做是正确的吗?在
defaultdict()
要求其第一个参数是可调用的:它必须是您想要的实例的类或返回实例的函数。在defaultdict({})
的字典为空,不可调用。在您可能需要
defaultdict(dict)
,因为dict
是一个类,它在实例化(调用)时返回字典。在但这仍然不能解决问题。。。只是把它移到另一个层次。
defaultdict(defaultdict(dict))
中的外部defaultdict(...)
也有完全相同的问题,因为defaultdict(dict)
不可调用。在您可以使用
lambda
表达式来解决此问题,创建一个单行函数,当调用该函数时,该函数将创建一个defaultdict(dict)
:如果需要,也可以使用较低级别的lambda:
^{pr2}$这种嵌套的
dict
结构可以使用递归的defaultdict
“树”实现:在每个级别,defaultdict都用
^{pr2}$tree
实例化,这是一个可以根据需要调用的零参数。 然后您可以简单地指定标记:相关问题 更多 >
编程相关推荐