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

Posted whcp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了踩坑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) #有中文时候加上

 

以上是关于踩坑d8:列表中添加字典 读写同一个exce的sheet页的主要内容,如果未能解决你的问题,请参考以下文章

Python列表元组集合字典的区别和相互转换

Python-追加/合并字典列表

sh D8

在python中怎么把列表中的元素添加到字典中

关于字典编辑及文件读写

在python中怎么把列表中的元素添加到字典中