python dict 字典 以及 赋值 引用的一些实例(详解)


Posted in Python onJanuary 20, 2017

最近在做一个很大的数据库方面的东东,要用到根据数值来查找,于是想到了python中的字典,平时没用过dict这个东东

用的最多的还是 list 和 tuple (网上查 用法一大堆)

看了一下创建字典的方法:

方法1:

dict = {'name': 'earth', 'port': 80}

方法2:

fdict = dict((['x', 1], ['y', 2]))

方法3:

ddict = {}.fromkeys(('x', 'y'), -1)

都实验了一下这些方法,发现不好用,做不出来自己想要的结果,因为数据库查找出来的结果是tuple类型的,不能改变,用方法2,必须得确保里面

是list (在这里提一下,tuple和list类型互换的方法 l=tuple(l) l = list(l))

在做练习的时候突然看到了一种方法,先声明一个

fdict= {}

然后

fdict[keys] = values

然后接下来继续循环这个式子就行了,结果能一个一个添加到fdict中,而不会被覆盖,以前还以为会默认覆盖成新的

用这种方法,一下就把结果转成了键值对

python中传值其实传的是地址:

例子:

a = [1,2,3,4]

b = a

a.append(1)

print a

print b

结果可以发现两个结果都为:[1,2,3,4,1]

这说明 python中的一个变量给另一个变量赋值时,传的是地址,所以当a指向的值变化时,b由于获得的是指向a的一个指针,所以结果也会

跟a的输出结果一样

more experiments:

a = [1,2,3,4]

b = a

a += [1] #在尾部增加一个list值

print a

print b

可以看到结果为:

[1, 2, 3, 4, 1]

[1, 2, 3, 4, 1]

这个没有什么问题,还是跟上面的解释一样,传的是地址,无论a怎么添加,b都是跟a地址相同的输出

再看下一个实验:

a = [1,2,3,4]

b = a

a = a + [1] #在尾部增加一个list值

print a

print b

读者可以试着跑一下看看结果

运行的结果为:

[1,2,3,4,1]

[1,2,3,4]

这是为什么呢?

为什么 += 和分开相加之后就不同结果了呢

通过查资料,我确信了以下解释:

当a = a+[1]时,系统所做的是把a + [1]的结果先放到另外一个地址c中,然后再把a指向这个c地址,所以输出a的时候,结果是可想而知的

但是b还是指向以前a的位置,以前位置的值并没有变化,所以b才会输出这样一个令人稍感诧异的值

而+=操作,还是在原来a指向的地址上进行操作,所以b也会跟着变化

总结:python中一个变量给另一个变量进行赋值操作(=)时,传的不是值,而是指针地址,一定要谨慎操作,避免掉坑

以上这篇python dict 字典 以及 赋值 引用的一些实例(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Python的内建模块collections的教程
Apr 28 Python
TensorFlow实现随机训练和批量训练的方法
Apr 28 Python
解决python3 网络请求路径包含中文的问题
May 10 Python
Python递归函数实例讲解
Feb 27 Python
python3.6+django2.0+mysql搭建网站过程详解
Jul 24 Python
python读写csv文件并增加行列的实例代码
Aug 01 Python
基于python的itchat库实现微信聊天机器人(推荐)
Oct 29 Python
python 函数中的参数类型
Feb 11 Python
Python3打包exe代码2种方法实例解析
Feb 17 Python
将 Ubuntu 16 和 18 上的 python 升级到最新 python3.8 的方法教程
Mar 11 Python
python3安装OCR识别库tesserocr过程图解
Apr 02 Python
通过实例解析python subprocess模块原理及用法
Oct 10 Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
Jan 20 #Python
python 查找字符串是否存在实例详解
Jan 20 #Python
python django 访问静态文件出现404或500错误
Jan 20 #Python
python中实现迭代器(iterator)的方法示例
Jan 19 #Python
Python正则替换字符串函数re.sub用法示例
Jan 19 #Python
Python中二维列表如何获取子区域元素的组成
Jan 19 #Python
python解决汉字编码问题:Unicode Decode Error
Jan 19 #Python
You might like
php桌面中心(二) 数据库写入
2007/03/11 PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
2015/10/10 PHP
asp.net和asp下ACCESS的参数化查询
2008/06/11 Javascript
基于jquery+thickbox仿校内登录注册框
2010/06/07 Javascript
jQuery选择头像并实时显示的代码
2010/06/27 Javascript
基于jquery的监控数据是否发生改变
2011/04/11 Javascript
web css实现整站样式互相切换
2013/10/29 Javascript
setTimeout()与setInterval()方法区别介绍
2013/12/24 Javascript
解决jQuery使用JSONP时产生的错误
2015/12/02 Javascript
Jquery鼠标放上去显示全名的实现方法
2017/02/06 Javascript
详解打造 Vue.js 可复用组件
2017/03/24 Javascript
Map.vue基于百度地图组件重构笔记分享
2017/04/17 Javascript
vue-cli项目中怎么使用mock数据
2017/09/27 Javascript
Node.js实现注册邮箱激活功能的方法示例
2018/03/23 Javascript
使用vue-cli打包过程中的步骤以及问题的解决
2018/05/08 Javascript
微信小程序开发之map地图组件定位并手动修改位置偏差
2019/08/17 Javascript
JavaScript 作用域scope简单汇总
2019/10/23 Javascript
vue中@change兼容问题详解
2019/10/25 Javascript
Node绑定全局TraceID的实现方法
2019/11/14 Javascript
vue组件传值的实现方式小结【三种方式】
2020/02/05 Javascript
vue element实现表格合并行数据
2020/11/30 Vue.js
JS中箭头函数与this的写法和理解
2021/01/14 Javascript
[55:44]OG vs NAVI 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
[01:08:29]DOTA2-DPC中国联赛定级赛 RNG vs Aster BO3第一场 1月9日
2021/03/11 DOTA
详解Python中where()函数的用法
2018/03/27 Python
python cs架构实现简单文件传输
2020/03/20 Python
python创建学生成绩管理系统
2019/11/22 Python
Desigual德国官网:在线购买原创服装
2018/03/27 全球购物
工作中的自我评价如何写好
2013/10/28 职场文书
如何做好总经理助理
2013/11/12 职场文书
优秀学生干部先进事迹材料
2014/05/26 职场文书
社区禁毒工作方案
2014/06/02 职场文书
市场营销毕业求职信
2014/08/07 职场文书
党员干部作风建设思想汇报范文
2014/10/25 职场文书
python实战之一步一步教你绘制小猪佩奇
2021/04/22 Python
Pandas实现批量拆分与合并Excel的示例代码
2022/05/30 Python