我有一个像这样的班
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。如果有人可以解释,那就太好了。