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调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
Aug 15 Python
python计算N天之后日期的方法
Mar 31 Python
Python的Django框架中forms表单类的使用方法详解
Jun 21 Python
详解Python中的from..import绝对导入语句
Jun 21 Python
python绘制多个曲线的折线图
Mar 23 Python
Python实现iOS自动化打包详解步骤
Oct 03 Python
python查看模块,对象的函数方法
Oct 16 Python
使用11行Python代码盗取了室友的U盘内容
Oct 23 Python
PyQt5的安装配置过程,将ui文件转为py文件后显示窗口的实例
Jun 19 Python
python字典的setdefault的巧妙用法
Aug 07 Python
python并发编程 Process对象的其他属性方法join方法详解
Aug 20 Python
Qt自定义Plot实现曲线绘制的详细过程
Nov 02 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下操作Linux消息队列完成进程间通信的方法
2010/07/24 PHP
PHP-Fcgi下PHP的执行时间设置方法
2013/08/02 PHP
windows7配置Nginx+php+mysql的详细教程
2016/09/04 PHP
浅谈laravel-admin的sortable和orderby使用问题
2019/10/03 PHP
关于laravel 子查询 & join的使用
2019/10/16 PHP
把JS与CSS写在同一个文件里的书写方法
2007/06/02 Javascript
js读写(删除)Cookie实例详解
2013/04/17 Javascript
jQuery隔行变色与普通JS写法的对比
2013/04/21 Javascript
JavaScript中的eval()函数详解
2013/08/22 Javascript
document.getElementById获取控件对象为空的解决方法
2013/11/20 Javascript
js判断客户端是iOS还是Android等移动终端的方法
2013/12/11 Javascript
JavaScript生成二维码图片小结
2015/12/27 Javascript
JavaScript实现DOM对象选择器
2016/09/24 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
2017/04/17 jQuery
详解微信小程序开发之formId使用(模板消息)
2019/08/27 Javascript
js实现简单掷骰子效果
2019/10/24 Javascript
CentOS安装pillow报错的解决方法
2016/01/27 Python
Python数据结构与算法之图结构(Graph)实例分析
2017/09/05 Python
详解django中使用定时任务的方法
2018/09/27 Python
解析python的局部变量和全局变量
2019/08/15 Python
Django自带日志 settings.py文件配置方法
2019/08/30 Python
关于numpy数组轴的使用详解
2019/12/05 Python
Django异步任务线程池实现原理
2019/12/17 Python
python 多线程中join()的作用
2020/10/29 Python
CSS3 please 跨浏览器的CSS3产生器
2010/03/14 HTML / CSS
使用CSS3来代替JS实现交互
2017/08/10 HTML / CSS
新闻记者实习自我鉴定
2013/09/19 职场文书
班主任评语大全
2014/04/26 职场文书
会计系毕业生求职信
2014/05/28 职场文书
大学生就业自荐书
2014/06/16 职场文书
2015年监理工作总结范文
2015/04/07 职场文书
社区青年志愿者活动总结
2015/05/06 职场文书
2015年度对口支援工作总结
2015/07/22 职场文书
使用python如何删除同一文件夹下相似的图片
2021/05/07 Python
Redis 哨兵集群的实现
2021/06/18 Redis
SpringCloud Function SpEL注入漏洞分析及环境搭建
2022/04/08 Java/Android