python字典append_python中字典重复赋值,append到list中引发的异常
今天遇到了一个关于python 字典的误用。先上代码:
data = [{'id': '1', 'name': '管理员', 'role': 'admin', 'desc': '系统管理员', 'acl': None},
{'id': '2', 'name': '研发', 'role': 'dev', 'desc': '研发人员', 'acl': None},
{'id': '3', 'name': '测试', 'role': 'qa', 'desc': '测试人员', 'acl': None},
{'id': '4', 'name': '项目经理', 'role': 'pm', 'desc': '项目经理', 'acl': None},
{'id': '5', 'name': '产品经理', 'role': 'po', 'desc': '产品经理', 'acl': None},
{'id': '6', 'name': '研发主管', 'role': 'td', 'desc': '研发主管', 'acl': None},
{'id': '7', 'name': '产品主管', 'role': 'pd', 'desc': '产品主管', 'acl': None},
{'id': '8', 'name': '测试主管', 'role': 'qd', 'desc': '测试主管', 'acl': None},
{'id': '9', 'name': '高层管理', 'role': 'top', 'desc': '高层管理', 'acl': None},
{'id': '10', 'name': '其他', 'role': 'others', 'desc': '其他', 'acl': None},
{'id': '11', 'name': 'guest', 'role': 'guest', 'desc': 'For guest', 'acl': None},
{'id': '12', 'name': '受限用户', 'role': 'limited', 'desc': '受限用户分组(只能编辑与自己相关的内容)', 'acl': None}]
depts = []
tmp_dept = {}
tmp_role = {}
roles = []
for i in data:
print (i)
tmp_dept["name"] = i["name"]
tmp_dept["id"] = i["id"]
tmp_role["name"] = i["name"]
tmp_role["role"] = i["role"]
depts.append(tmp_dept)
roles.append(tmp_role)
print(depts,roles)
逻辑挺简单的,就是吧data中的数据分离成两个列表。在分离过程中,用两个字典临时周转一下。
但是在实际运行过程中,却没有得到期望的结果。得到的结果是
[{'name': '受限用户', 'id': '12'}, {'name': '受限用户', 'id': '12'}, {'name': '受限用户', 'id': '12'}, {'name': '受限用户', 'id': '12'}, {'name': '受限用户', 'id': '12'}, {'name': '受限用户', 'id': '12'}, {'name': '受限用户', 'id': '12'}, {'name': '受限用户', 'id': '12'}, {'name': '受限用户', 'id': '12'}, {'name': '受限用户', 'id': '12'}, {'name': '受限用户', 'id': '12'}, {'name': '受限用户', 'id': '12'}]
[{'name': '受限用户', 'role': 'limited'}, {'name': '受限用户', 'role': 'limited'}, {'name': '受限用户', 'role': 'limited'}, {'name': '受限用户', 'role': 'limited'}, {'name': '受限用户', 'role': 'limited'}, {'name': '受限用户', 'role': 'limited'}, {'name': '受限用户', 'role': 'limited'}, {'name': '受限用户', 'role': 'limited'}, {'name': '受限用户', 'role': 'limited'}, {'name': '受限用户', 'role': 'limited'}, {'name': '受限用户', 'role': 'limited'}, {'name': '受限用户', 'role': 'limited'}]
date中最后一条数据重复出现了。
这时意识到,应该是appen的数据有问题。怀疑是字典赋值异常。于是在append语句后查看字典id,结果发现所有的id是相同的。也就是说,插入到depts roles中的字典是同一个,即便是在迭代循环date的过程中,他的value不停地变化。
解决方法:
在每次迭代循环里,重新创建字典
代码如下
data = [{'id': '1', 'name': '管理员', 'role': 'admin', 'desc': '系统管理员', 'acl': None},
{'id': '2', 'name': '研发', 'role': 'dev', 'desc': '研发人员', 'acl': None},
{'id': '3', 'name': '测试', 'role': 'qa', 'desc': '测试人员', 'acl': None},
{'id': '4', 'name': '项目经理', 'role': 'pm', 'desc': '项目经理', 'acl': None},
{'id': '5', 'name': '产品经理', 'role': 'po', 'desc': '产品经理', 'acl': None},
{'id': '6', 'name': '研发主管', 'role': 'td', 'desc': '研发主管', 'acl': None},
{'id': '7', 'name': '产品主管', 'role': 'pd', 'desc': '产品主管', 'acl': None},
{'id': '8', 'name': '测试主管', 'role': 'qd', 'desc': '测试主管', 'acl': None},
{'id': '9', 'name': '高层管理', 'role': 'top', 'desc': '高层管理', 'acl': None},
{'id': '10', 'name': '其他', 'role': 'others', 'desc': '其他', 'acl': None},
{'id': '11', 'name': 'guest', 'role': 'guest', 'desc': 'For guest', 'acl': None},
{'id': '12', 'name': '受限用户', 'role': 'limited', 'desc': '受限用户分组(只能编辑与自己相关的内容)', 'acl': None}]
depts = []
roles = []
for i in data:
tmp_dept = {}
tmp_role = {}
tmp_dept["name"] = i["name"]
tmp_dept["id"] = i["id"]
tmp_role["name"] = i["name"]
tmp_role["role"] = i["role"]
depts.append(tmp_dept)
roles.append(tmp_role)
print(depts,roles)
python字典append_python中字典重复赋值,append到list中引发的异常相关推荐
- java从数组查找指定整数_如何在Java中使用重复项查找整数数组中的K个缺失数字?...
java从数组查找指定整数 自从我讨论任何编码或算法面试问题以来已经有很长时间了,因此我想重新考虑一种最流行的基于数组的编码问题,即在给定数组中查找缺失的数字. 在进行编程工作面试之前,您可能已经听说 ...
- Linux查找文本中的重复项,2在Linux中查找和删除重复文件的有用工具
如果您有从互联网下载各种内容的习惯,组织您的主目录甚至系统可能会特别困难. 通常,您可能会发现已下载相同的mp3,pdf,epub(以及所有其他文件扩展名)并将其复制到不同的目录中. 这可能会导致您的 ...
- LeetCode算法 删除有序数组中的重复项 删除有序数组中的重复项|| C++
目录 题目 删除有序数组中的重复项 参考答案 题目 删除有序数组中的重复项|| 参考答案 题目 删除有序数组中的重复项 给你一个有序数组 nums ,请你原地删除重复出现的元素,使每个元素只出现一次 ...
- 如何在Java中使用重复项查找整数数组中的K个缺失数字?
自从我讨论任何编码或算法面试问题以来已经有很长时间了,因此我想重新考虑一种最流行的基于数组的编码问题,即在给定数组中查找缺失的数字. 在进行编程工作面试之前,您可能已经听说过或看到过此问题,但是面试官 ...
- java打印数组中不重复的数字_java-在数组中查找重复项并仅打印一次
我试图遍历数组并查找所有重复多次的数字: 例如:如果有1 1 2 3 4 它应打印出" 1重复不止一次"的字样 这是我的代码,到目前为止,我一直在尝试,但是它会打印所有重复项并继续 ...
- Python中字典的应用及相关操作!
小白如何成为python数据分析师 第9天---->字典(dict) 小学我们就学会了翻阅查询新华字典了,我们可以通过目录索引查询我们要找的字,便于理解学习这个字和字的含义.那么在编程语言中我们 ...
- 温故知新MySQL--如何在MySQL表中删除重复行
2019独角兽企业重金招聘Python工程师标准>>> 如何在MySQL表中删除重复行 在实际应用中,会有需要删除重复数据的场景.这里简单介绍下如何删除重复的数据 1. 准备数据 C ...
- php数组重复值销毁,如何从PHP中删除数组中的重复值
如何从PHP中删除数组中的重复值 如何从PHP中删除数组中的重复值? 21个解决方案 204 votes 使用array_unique(). 例: $array = array(1, 2, 2, 3) ...
- java——定义一个功能将ArrayList 集合中的重复元素删除(java集合七)
定义一个功能将ArrayList 集合中的重复元素删除 ArrayList 集合中是允许储存重复元素的 import java.util.ArrayList; import java.util.Ite ...
- day04_ 最长回文子串 / 删除排序数组中的重复项
day04 5. 最长回文子串 26. 删除排序数组中的重复项 ❗另:java中length,length(),size()区别 5. 最长回文子串 LeetCode链接 给定一个字符串 s,找到 s ...
最新文章
- Windows 11 正式官宣:全新 UI、支持安卓 App、应用商店 0 抽成!
- JAVA String 相加编译器发生了什么?
- Spring学习总结(一)——Spring实现IoC的多种方式
- 面向对象程序设计第二次作业(2)
- Java实现线性表(顺序表,链表)
- Google专卖店顾客消费预测问题:如何将数据的json格式转换成csv格式
- table中td内容过长自动换行
- Java制作证书的工具keytool用法总结
- 微型计算机原理控制,微机原理与控制技术(试题).doc
- JavaScript 关灯游戏
- cvte软件测试在线测评,CVTE笔试题总结归纳
- base64编码解码离线工具windows,ubuntu
- php获取当前域名的方法 如何获得域名
- IRQL Ring0实现
- installshield 如何实现Oracle数据库脚本的执行功能
- 利用Python制作王者战力查询以及皮肤查看软件
- linux版印象笔记 for deepin
- 图片信息查看软件 ExifTool GUI
- FTDI(FT220XQ)(一)——USB转SPI芯片的使用之驱动安装及设备信息配置
- 【blender建模功能】06 多边形建形工具
热门文章
- 逻辑综合——施加约束
- (三)系统与架构级低功耗设计
- 在Windows系统中配置Google AddressSanitizer
- java数据生成excel_Java 数据库数据生成Excel
- sql加上唯一索引后批量插入_阿里大佬总结的52条SQL语句性能优化策略,建议收藏...
- 120xa正反转参数_你知道变频器的“正反转死区时间”吗?它的“停机方式”有几种?...
- hikaril连接sql2000_hikari连接池解析(版本:HikariCP-2.5.1.jar)
- 第5章 Python 数字图像处理(DIP) - 图像复原与重建17 - 由投影重建图像、雷登变换、投影、反投影、反投影重建
- android功耗iphone,是心目中的安卓小屏旗舰吗?iPhone 8尺寸大小,4000mAh电池容量...
- 细细讲述Java技术开发的那些不为人知的规则