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中用max()方法求最大值的介绍
May 15 Python
简单介绍Python的Django框架加载模版的方式
Jul 20 Python
Python设置Socket代理及实现远程摄像头控制的例子
Nov 13 Python
Python的组合模式与责任链模式编程示例
Feb 02 Python
深入理解python中sort()与sorted()的区别
Aug 29 Python
Window环境下Scrapy开发环境搭建
Nov 18 Python
keras-siamese用自己的数据集实现详解
Jun 10 Python
Python requests上传文件实现步骤
Sep 15 Python
Python3 多线程(连接池)操作MySQL插入数据
Jun 09 Python
Python常用配置文件ini、json、yaml读写总结
Jul 09 Python
Python办公自动化PPT批量转换操作
Sep 15 Python
Python按顺序遍历并读取文件夹中文件
Apr 29 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
模拟SQLSERVER的两个函数:dateadd(),datediff()
2006/10/09 PHP
浅析echo(),print(),print_r(),return之间的区别
2013/11/27 PHP
phpstorm配置Xdebug进行调试PHP教程
2014/12/01 PHP
配置eAccelerator和XCache扩展来加速PHP程序的执行
2015/12/22 PHP
PHP文件下载实例代码浅析
2016/08/17 PHP
PHP实现图片的等比缩放和Logo水印功能示例
2017/05/04 PHP
php ajax confirm 删除实例详解
2019/03/06 PHP
JavaScript全排列的六种算法 具体实现
2013/06/29 Javascript
js禁止页面复制功能禁用页面右键菜单示例代码
2013/08/29 Javascript
JavaScript中setUTCFullYear()方法的使用简介
2015/06/12 Javascript
jQuery实现的网页左侧在线客服效果代码
2015/10/23 Javascript
jQuery Chart图表制作组件Highcharts用法详解
2016/06/01 Javascript
微信小程序 本地数据读取实例
2017/04/27 Javascript
JS图片预加载插件详解
2017/06/21 Javascript
Vue 多层组件嵌套二种实现方式(测试实例)
2017/09/08 Javascript
HTML5开发Kinect体感游戏的实例应用
2017/09/18 Javascript
关于自定义Egg.js的请求级别日志详解
2018/12/12 Javascript
JQueryDOM之样式操作
2019/03/27 jQuery
js实现贪吃蛇游戏 canvas绘制地图
2020/09/09 Javascript
js删除指定位置超链接中含有百度与360的标题
2021/01/06 Javascript
[01:42]辉夜杯战队访谈宣传片—FANTUAN
2015/12/25 DOTA
使用Python的Flask框架来搭建第一个Web应用程序
2016/06/04 Python
基于python的图片修复程序(实现水印去除)
2018/06/04 Python
对python打乱数据集中X,y标签对的方法详解
2018/12/14 Python
python抖音表白程序源代码
2019/04/07 Python
pyqt5 删除layout中的所有widget方法
2019/06/25 Python
python实现的生成word文档功能示例
2019/08/23 Python
python3爬虫中异步协程的用法
2020/07/10 Python
Python paramiko使用方法代码汇总
2020/11/20 Python
草莓巧克力:Shari’s Berries
2017/02/07 全球购物
JD Sports法国:英国篮球和运动时尚的领导者
2017/09/28 全球购物
PHP引擎php.ini参数优化深入讲解
2021/03/24 PHP
年度考核自我鉴定
2013/11/09 职场文书
2014年寒假社会实践活动心得体会
2014/04/07 职场文书
质量保证书格式模板
2015/02/27 职场文书
MySQL数据库配置信息查看与修改方法详解
2022/06/25 MySQL