zoukankan      html  css  js  c++  java
  • 踩坑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) #有中文时候加上

  • 相关阅读:
    tkinter 改变按钮状态
    python 遗传算法精简版
    极简反传(BP)神经网络
    python 操作注册表
    python 调用 shell 命令方法
    Python标准库:内置函数dict(mapping, **kwarg)
    3.2.2 正則表達式的功能
    NSArray利用Cocoa框架进行汉字排序
    Java多线程具体解释
    android6.0权限管理工具EasyPermissionUtil
  • 原文地址:https://www.cnblogs.com/whcp855/p/13152765.html
Copyright © 2011-2022 走看看