问题描述

当我想要在函数中返回字典dict1,但是后续的操作还要改变dict1。即,字典的后续操作和字典的返回相矛盾。

一个思路是,我再定义一个字典dict2,令其等于dict1。然后dict2用于后续更改,dict1作为返回值。即,返回和修改对不同的字典进行。


bug描述

我直接使用:

dict2 = dict1

然后dict1作为返回值,dict2用于函数内的后续修改。

结果就发现,我对dict2进行修改时,dict1也被同样地修改了。


解决方式

直接使用=进行字典的复制,dict2指向的还是dict1 (类似C语言中指针的概念),即dict1dict2的修改是相通的。

字典的复制要用字典的copy()函数:

dict2 = dict1.copy()

示例

def samples_per_class(labels, label_map=None):'''input:lables: ndarray, labels of samples in train/validation/test/whole setlabel_max: (optional) dict, map between raw labels and labels to calculateoutput:count_result: sample number of each class with encoded label(eg. label for compute)'''if not type(labels) is np.ndarray:      # tensor转ndarraylabels=labels.cpu().detach().numpy()count_result=Counter(labels)            # 对labels各label的数量进行计数, key为1,2,……count_for_display=count_result.copy()           # 保存label为编码结果的计数结果,用于返回print("sample numbers of each class are as follow: ")if label_map is not None:  # 将用于计算的label替换为初始的labelfor key, value in label_map.items():# print(key, value)count_for_display.update({key: count_for_display[value]})count_for_display.pop(value)for key, value in count_for_display.items():print(key, ':', value)
return count_result

[debug+Python] 复制字典不能直接用 ‘=’,要用dict_name.copy()相关推荐

  1. python复制字典_python字典复制

    python学习系列--深拷贝和浅拷贝 概念 普通情况下,复制一个对象是不会新开辟内存空间的,只是把新的对象名称指向原有的内存地址,这种操作其实不是算是拷贝,只是新的引用.把新的对象置于新的内存空间中 ...

  2. 在python IDLE中打开python Shell,就可以直接用import导入当前模块了

    在打开的.py文件上面的工具栏中找Run->Python Shell 就可以了

  3. Python Dictionary 字典

    字典反转(reverse/inverse dictionary/mapping) Python字典反转就是将原字典的key作为value,而原来的value作为key,得到新的一个字典.如: 原字典为 ...

  4. python获取字典键值集合_Python集合字典

    Python集合&字典 @ 字典 字典的几种定义方式 第一种 字典{key1 : value1, key2 : value2, ......} dict1 = {'one': 1, 'two' ...

  5. 微信群聊图灵机器人 复制直接用

    ​​​​​ from itchat.content import * import requests import json import itchat #最好添加这个 不然会报错 import sy ...

  6. python字典副本_如何复制字典并仅在Python中编辑副本?

    python字典副本 Python never implicitly copies the dictionary or any objects. So, while we set dict2 = di ...

  7. [转载] python中字典copy_python深度复制字典,copy方法与deepcopy方法

    参考链接: Python字典copy() 简介 INTRODUCTION掌握python中字典数据的赋值处理,掌握指针到底在哪里?... 本篇文章创作主要是为了让小伙伴们掌握普通字典的赋值.字典的co ...

  8. Java练习之坦克大战!!!复制可以直接用!!!文章最后有飞机大战代码!!!

    用Java写一个入门游戏--坦克大战! 源代码!!!复制可以直接用!!! 文章最后还有飞机大战代码!!! 本代码写的较为入门,有需要的铁铁们可以去看看!!! 在往期我们讲解了窗口.循环.数组和继承的一 ...

  9. 聊天没有表情包被嘲讽,程序员直接用python爬取了十万张表情包

    聊天没有表情包被嘲讽,程序员直接用python爬取了十万张表情包 前言 分析页面 具体实现 解析页面 获取网页内容 解析网页内容 文件下载 多线程下载 成果 总结 前言 事情要从几天前说起,我有一个朋 ...

最新文章

  1. “偷懒”上热搜!南京大三学生自制宿舍关灯神器火了,网友:希望量产
  2. 转 Debugging AutoCAD 2017 using Visual Studio 2015
  3. Bing改善Microsoft Office及Edge浏览器图像搜索功能
  4. 计算机网络体系结构物流层,计算机网络体系结构58029.ppt
  5. RIP-OSPF-EIGRP 相互再发布
  6. 存储过程和transaction
  7. 对比Cnblogs.com、CSDN.net和Javaeye.com的人气
  8. matlab差分法解拉普拉斯方程,拉普拉斯方程有限差分法的MATLAB实现
  9. MATLAB-绘图-散点图绘制
  10. 通过jclasslib修改class文件
  11. oracle怎么锁表以及解锁,Oracle锁表与解锁
  12. 三星 android 调试模式设置,三星galaxy s4 usb调试在哪里 s4 usb调试模式设置方法详解...
  13. Deep Inductive Logic Reasoning深度感应逻辑推理模型 论文笔记
  14. linux主流ftp server,Linux下常用的Ftp Server
  15. Swift代码库之中文简体与繁体转换
  16. Python爬取多网页表格数据(非table)
  17. linux图像编辑,Photoflare:Linux下简单的开源图像编辑器
  18. 短距离无线通讯-ZigBee
  19. csharp高级练习题:Codewars风格排名系统【难度:4级】--景越C#经典编程题库,不同难度C#练习题,适合自学C#的新手进阶训练
  20. Java数组实现循环队列

热门文章

  1. python自动化办公-Python自动化办公室(1),python,一
  2. python菜鸟教程100例-Python 基础教程 | 菜鸟教程
  3. qq语音识别_qq语音红包自动识别_qq语音红包一直未识别 - 云+社区 - 腾讯云
  4. 并行DA实验c语言程序,求助怎么把两个单片机c语言程序结合在一起?大一期末实验...
  5. React入门基础+练习(二)
  6. 【互联网周刊】2022年第6期摘录
  7. 剑指offer||3 前n个数二进制数中1的个数
  8. JNA调用DLL函数遇到的几个问题
  9. cad中填充的剖面线不能被修剪_在模具行业中CAD二维制图的相关绘图规范
  10. python描述符魔术方法_学习笔记-Python基础9-面向对象编程OOP-类的成员描述符(property)、类的常用内置属性、类的常用魔术方法、类和对象的三种方法...