[debug+Python] 复制字典不能直接用 ‘=’,要用dict_name.copy()
问题描述
当我想要在函数中返回字典dict1
,但是后续的操作还要改变dict1
。即,字典的后续操作和字典的返回相矛盾。
一个思路是,我再定义一个字典dict2
,令其等于dict1
。然后dict2
用于后续更改,dict1
作为返回值。即,返回和修改对不同的字典进行。
bug描述
我直接使用:
dict2 = dict1
然后dict1
作为返回值,dict2
用于函数内的后续修改。
结果就发现,我对dict2
进行修改时,dict1
也被同样地修改了。
解决方式
直接使用=
进行字典的复制,dict2
指向的还是dict1
(类似C语言中指针的概念),即dict1
和dict2
的修改是相通的。
字典的复制要用字典的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()相关推荐
- python复制字典_python字典复制
python学习系列--深拷贝和浅拷贝 概念 普通情况下,复制一个对象是不会新开辟内存空间的,只是把新的对象名称指向原有的内存地址,这种操作其实不是算是拷贝,只是新的引用.把新的对象置于新的内存空间中 ...
- 在python IDLE中打开python Shell,就可以直接用import导入当前模块了
在打开的.py文件上面的工具栏中找Run->Python Shell 就可以了
- Python Dictionary 字典
字典反转(reverse/inverse dictionary/mapping) Python字典反转就是将原字典的key作为value,而原来的value作为key,得到新的一个字典.如: 原字典为 ...
- python获取字典键值集合_Python集合字典
Python集合&字典 @ 字典 字典的几种定义方式 第一种 字典{key1 : value1, key2 : value2, ......} dict1 = {'one': 1, 'two' ...
- 微信群聊图灵机器人 复制直接用
from itchat.content import * import requests import json import itchat #最好添加这个 不然会报错 import sy ...
- python字典副本_如何复制字典并仅在Python中编辑副本?
python字典副本 Python never implicitly copies the dictionary or any objects. So, while we set dict2 = di ...
- [转载] python中字典copy_python深度复制字典,copy方法与deepcopy方法
参考链接: Python字典copy() 简介 INTRODUCTION掌握python中字典数据的赋值处理,掌握指针到底在哪里?... 本篇文章创作主要是为了让小伙伴们掌握普通字典的赋值.字典的co ...
- Java练习之坦克大战!!!复制可以直接用!!!文章最后有飞机大战代码!!!
用Java写一个入门游戏--坦克大战! 源代码!!!复制可以直接用!!! 文章最后还有飞机大战代码!!! 本代码写的较为入门,有需要的铁铁们可以去看看!!! 在往期我们讲解了窗口.循环.数组和继承的一 ...
- 聊天没有表情包被嘲讽,程序员直接用python爬取了十万张表情包
聊天没有表情包被嘲讽,程序员直接用python爬取了十万张表情包 前言 分析页面 具体实现 解析页面 获取网页内容 解析网页内容 文件下载 多线程下载 成果 总结 前言 事情要从几天前说起,我有一个朋 ...
最新文章
- “偷懒”上热搜!南京大三学生自制宿舍关灯神器火了,网友:希望量产
- 转 Debugging AutoCAD 2017 using Visual Studio 2015
- Bing改善Microsoft Office及Edge浏览器图像搜索功能
- 计算机网络体系结构物流层,计算机网络体系结构58029.ppt
- RIP-OSPF-EIGRP 相互再发布
- 存储过程和transaction
- 对比Cnblogs.com、CSDN.net和Javaeye.com的人气
- matlab差分法解拉普拉斯方程,拉普拉斯方程有限差分法的MATLAB实现
- MATLAB-绘图-散点图绘制
- 通过jclasslib修改class文件
- oracle怎么锁表以及解锁,Oracle锁表与解锁
- 三星 android 调试模式设置,三星galaxy s4 usb调试在哪里 s4 usb调试模式设置方法详解...
- Deep Inductive Logic Reasoning深度感应逻辑推理模型 论文笔记
- linux主流ftp server,Linux下常用的Ftp Server
- Swift代码库之中文简体与繁体转换
- Python爬取多网页表格数据(非table)
- linux图像编辑,Photoflare:Linux下简单的开源图像编辑器
- 短距离无线通讯-ZigBee
- csharp高级练习题:Codewars风格排名系统【难度:4级】--景越C#经典编程题库,不同难度C#练习题,适合自学C#的新手进阶训练
- Java数组实现循环队列
热门文章
- python自动化办公-Python自动化办公室(1),python,一
- python菜鸟教程100例-Python 基础教程 | 菜鸟教程
- qq语音识别_qq语音红包自动识别_qq语音红包一直未识别 - 云+社区 - 腾讯云
- 并行DA实验c语言程序,求助怎么把两个单片机c语言程序结合在一起?大一期末实验...
- React入门基础+练习(二)
- 【互联网周刊】2022年第6期摘录
- 剑指offer||3 前n个数二进制数中1的个数
- JNA调用DLL函数遇到的几个问题
- cad中填充的剖面线不能被修剪_在模具行业中CAD二维制图的相关绘图规范
- python描述符魔术方法_学习笔记-Python基础9-面向对象编程OOP-类的成员描述符(property)、类的常用内置属性、类的常用魔术方法、类和对象的三种方法...