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 函数内部修改外部变量的方法
Dec 18 Python
Pandas统计重复的列里面的值方法
Jan 30 Python
python 将有序数组转换为二叉树的方法
Mar 26 Python
基于Python打造账号共享浏览器功能
May 30 Python
pyqt 实现在Widgets中显示图片和文字的方法
Jun 13 Python
详解Python中的正斜杠与反斜杠
Aug 09 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
Feb 12 Python
Python实现桌面翻译工具【新手必学】
Feb 12 Python
python GUI库图形界面开发之PyQt5控件数据拖曳Drag与Drop详细使用方法与实例
Feb 27 Python
解决使用Pandas 读取超过65536行的Excel文件问题
Nov 10 Python
Python eval函数原理及用法解析
Nov 14 Python
分享Python获取本机IP地址的几种方法
Mar 17 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
SONY ICF-F10中波修复记
2021/03/02 无线电
删除无限分类并同时删除它下面的所有子分类的方法
2010/08/08 PHP
Yii PHP Framework实用入门教程(详细介绍)
2013/06/18 PHP
自定义session存储机制避免会话保持问题
2014/10/08 PHP
php实现登陆模块功能示例
2016/10/20 PHP
详解ThinkPHP3.2.3验证码显示、刷新、校验
2016/12/29 PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
2018/08/15 PHP
laravel-admin的多级联动方法
2019/09/30 PHP
PHP优化之批量操作MySQL实例分析
2020/04/23 PHP
Open and Print a Word Document
2007/06/15 Javascript
网页中CDATA标记的说明
2010/09/12 Javascript
jquery 插件学习(五)
2012/08/06 Javascript
JS,Jquery获取select,dropdownlist,checkbox下拉列表框的值(示例代码)
2014/01/11 Javascript
jQuery复制表单元素附源码分享效果演示
2015/09/30 Javascript
JavaScript 七大技巧(二)
2015/12/13 Javascript
angularjs表格ng-table使用备忘录
2016/03/09 Javascript
获取select的value、text值的简单示例(jquery与javascript)
2016/12/07 Javascript
Bootstrap基本组件学习笔记之分页(12)
2016/12/08 Javascript
web前端开发中常见的多列布局解决方案整理(一定要看)
2017/10/15 Javascript
webpack3之loader全解析
2017/10/26 Javascript
Vue用mixin合并重复代码的实现
2020/11/27 Vue.js
python中元类用法实例
2014/10/10 Python
python使用电子邮件模块smtplib的方法
2016/08/28 Python
DataFrame中去除指定列为空的行方法
2018/04/08 Python
PyTorch CNN实战之MNIST手写数字识别示例
2018/05/29 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
2020/11/06 Python
HTML5混合开发二维码扫描以及调用本地摄像头
2017/12/27 HTML / CSS
全球采购的街头服饰和帽子:Urban Excess
2020/10/28 全球购物
某个公司的Java笔面试题
2016/03/11 面试题
人力资源经理的岗位职责范本
2014/02/28 职场文书
大学生个人求职信
2014/06/02 职场文书
技校毕业生自荐信
2014/06/03 职场文书
民间个人借款协议书
2014/09/30 职场文书
教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
体育委员竞选稿
2015/11/21 职场文书
python文件目录操作之os模块
2021/05/08 Python