Python 创建dict of dict:循环

Python 创建dict of dict:循环,python,Python,我想使用一个循环创建一个字典字典(DofD)。在循环内部,我的'subct'变量将被设置,然后用一个新名称添加到DofD中 我从文件中读取内容,根据分隔符“#######”将内容拆分为块,分隔每个子目录中所需的内容。我根据块中的一个字段命名DofD中的每个条目 我很困惑,因为我的输出DofD有正确命名的条目,但是子部分的所有信息都是相同的。所有值都反映了最后一个子目录的内容 idxs=[i for i,val in enumerate(fileContents) if val=='####\r\

我想使用一个循环创建一个字典字典(DofD)。在循环内部,我的'subct'变量将被设置,然后用一个新名称添加到DofD中

我从文件中读取内容,根据分隔符“#######”将内容拆分为块,分隔每个子目录中所需的内容。我根据块中的一个字段命名DofD中的每个条目

我很困惑,因为我的输出DofD有正确命名的条目,但是子部分的所有信息都是相同的。所有值都反映了最后一个子目录的内容

idxs=[i for i,val in enumerate(fileContents) if val=='####\r\n']
paramsDict={}
for i in range(len(idxs)):
    pos=idxs[i]
    if i < len(idxs)-1: endLine=idxs[i+1]+1 # watch out for end of file
    else: endLine=len(fileContents)
    blockForSubDict=fileContents[idxs[i]+1:endLine]

    paramsDict[blockForSubDict[0].split()[0]]={'Name': blockForSubDict[0].split()[0], 'Values' : [float(x.replace('\r\n','')) for x in blockForSubDict[5:lenBlock]]}
{'name1':{'Name':'name1','Value':30}, 'name2':{'Name':'name2','Value':29}

这起作用了


我在循环中搞砸了什么?

所以,问题是我的DofD中的条目实际上只是对循环中的子ct的引用。这意味着我的DofD只是有一堆不同名称的条目,它们都指向同一个子ct。子ct的内容随着每次迭代而改变,并最终通过我的循环反映上次的块值。因此,我的DofD中的所有条目都显示了相同的子ct值集

我决定在DofD中使用子ct的deepcopy(),以便每个条目都保持其唯一的内容,而不是在每次迭代中创建一个名称不同的子ct

我的代码现在看起来像:

    import copy
    ...
    paramsDict[blockForSubDict[0].split()[0]]={'Name':
    copy.deepcopy(blockForSubDict[0].split()[0]), 
    'Values' : 
    [copy.deepcopy(float(x.replace('\r\n',''))) for x in blockForSubDict[5:lenBlock]]}

这不是一个问题-你应该把它改成一个问题,然后。转换成一个问题格式。
    import copy
    ...
    paramsDict[blockForSubDict[0].split()[0]]={'Name':
    copy.deepcopy(blockForSubDict[0].split()[0]), 
    'Values' : 
    [copy.deepcopy(float(x.replace('\r\n',''))) for x in blockForSubDict[5:lenBlock]]}