踩坑d8:列表中添加字典、 读写同一个exce的sheet页

在往列表中添加字典时若使用为键赋值的方式,则会出现前面的字典数据被最后一条字典数据覆盖。

l = []
data = {}
for i in range(1, 3):
data['url'] = i + 1
data['method'] = i + 2
l.append(data)
print(l)


#[{'url': 3, 'method': 4}, {'url': 3, 'method': 4}]

原因:列表的append方法在为其添加数据的时候并没有将完整的字典数据都拷贝的列表当中(为了提高空间的使用率),而是存储字典数据所在地址,而以上字典修改的是同一个内存地址下的数据,内存地址id没变

解决办法:每次为列表添加数据的时候,在内存中其他位置创建与该字典相同的数据并加入列表(若字典内包含列表,需要使用deepcopy)
l = []
data = {}
for i in range(1, 3):
data['url'] = i + 1
data['method'] = i + 2
l.append(data.copy())
print(l)

#[{'url': 2, 'method': 3}, {'url': 3, 'method': 4}]

###  xlrd读excel是从(0,0)开始

### load_workbook可以读写操作同一个excel,,是从(1,1)为起点    #坑

from openpyxl import load_workbook

def write_operate(self,path,sheetname,nrow,ncol,info):
self.path = path
target_book = load_workbook(path)
sheetname = target_book.active
sheetname.cell(nrow,ncol,info)
target_book.save(path)

 json.loads 用于解码 JSON 数据    json.dumps,将 Python 对象编码成 JSON 字符串

## json.json.loads(data),data内必须使用双引号,不能使用单引号 ##坑

##json.json.dumps(pythonobj,ensure_ascii=False) #有中文时候加上

原文地址:https://www.cnblogs.com/whcp855/p/13152765.html