追加到自字典列表中

时间:2020-06-01 00:47:59

标签: python list class dictionary append

我有一个像这样的班

class csv_logger(object):
def __init__(self,totalsDict):
    self.columns = list(totalsDict.keys())
    self.bufferDict = dict.fromkeys(self.columns,0)
    self.logDict = dict.fromkeys(self.columns,[0])

def log(self, newTotalsDict):
    for key in self.columns:
        self.logDict[key].append(newTotalsDict[key] - self.bufferDict[key])
    self.bufferDict = copy.deepcopy(newTotalsDict)

当我初始化它并随后调用“ log”方法时,该方法的for循环中的append操作适用于此dict在循环的每个步骤中保留的所有列表。换句话说,假设len(self.columns)= 2并且self.logDict中的两个2​​列表在其列表中都有1个元素。当“ log”方法一次结束时,分配给self.logDict的键的所有列表将再获得2个元素(必须为1)。并且附加值也相同。 但是当我将.append行更改为;

self.logDict[key] = self.logDict[key] + [newTotalsDict[key] - self.bufferDict[key]]

工作正常,产生的列表的长度按预期增加了1。如果有人可以解释,那就太好了。

0 个答案:

没有答案