博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 字典 get方法
阅读量:6265 次
发布时间:2019-06-22

本文共 863 字,大约阅读时间需要 2 分钟。

在做项目的过程中,遇到了一个问题,数据保存到字典中,后来发现数据不对,排查了字典的构建过程,是OK的,后来怀疑是别的部分共用了这一个字典,排查代码,发现这里应该是有问题的。

score = NonedeltaScore = result.get('score', [0 for _ in range(4)]if not score:    score = deltaScoreelse:    for index in range(4):        score[index] += deltaScore[index]

 代码逻辑是从字典中获取score键的值,score为None,则直接将deltaScore赋值给score,而没有注意的是dict的get方法,是将该键的的内存赋值给deltaScore,是一个list,deltaScore再赋值给score,score、deltaScore、dict中的score键共用了一份内存,在else部分,修改score,也修改了dict的值。

最主要的是要了解python的数据类型, 从以下的验证代码也可以看出:

>>> a = {
"test1":[1,2,3], "test2":[4,5,6]}>>> improt jsonFile "
", line 1improt json^SyntaxError: invalid syntax>>> b = a.get("test1", [0 for _ in range(3)])>>> print b[1, 2, 3]>>> for index in range(3):... b[index] += 1...>>>>>> print b[2, 3, 4]>>> print a{
'test1': [2, 3, 4], 'test2': [4, 5, 6]}>>>

 

转载于:https://www.cnblogs.com/yuanhuikai/p/7220556.html

你可能感兴趣的文章
了解你所不知道的SMON功能(十二):Shrink UNDO(rollback) SEGMENT
查看>>
GCC编译器中的扩展
查看>>
[置顶] 礼物:《红孩儿引擎内功心法修练与Cocos2d-x》之结点系统(场景,层,精灵)...
查看>>
使用快捷键,快到极致
查看>>
[原]【实例化需求】1.FitNesse工具应用简介
查看>>
java中的import和package机制
查看>>
统计、案例-深入理解Oracle索引(10):索引列字符类型统计信息的32位限制-by小雨...
查看>>
ubuntu常用命令精选
查看>>
UML类图
查看>>
企业上市上市央企大面积亏损折射出啥弊端?
查看>>
DXP_protel2004_原理图设计基础_集成运放原理图设计学习
查看>>
powershell--uninstall webapplication
查看>>
ubuntu配置vsftpd记录
查看>>
日期控件Android 自定义日历控件
查看>>
Java多线程编程:变量共享分析(Thread)
查看>>
word如何自动生成目录
查看>>
疯狂暑期学习计划~~~
查看>>
Mysql查询大表出现的一个错误
查看>>
Scala 中的foreach和map方法比较
查看>>
使用OWIN作为WebAPI的宿主
查看>>