我需要将嵌套值分配给字典。为了便于理解,我简化了我的问题:
Data = {}
day1 = 'March12'
day2 = 'March14'
e1 = 'experiment1'
e2 = 'experiment2'
Data[day1][e1] = 4
但是Data[day1][e1] = 4
命令无法运行(与test = {} ; test["foo"]["bar"] = 0
相同的原因)。有没有解决方法?
我尝试过类似以下的操作:
me1 = {e1 : 4}
me2 = {e2 : 5}
Data = {day1 : me1}
Data = {day2 : me2}
但是我没有成功;所有我写的东西都以某种方式覆盖了已有的值或者不如我所愿。我可能漏掉了什么......
一些额外的注释:一开始没有关于字典长度或其具体样子的任何信息。而且,我会将一个对象分配为一个值,而不是值“4”。我需要使用这样的结构(Data[day1][e1]),因为我必须在循环内为它们的键分配对象。
factory = lambda: defaultdict(factory)
,然后data = defaultdict(factory)
。请注意工厂的递归定义。 - Martijn Pieters