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算法应用实战之队列详解
Feb 04 Python
python基础教程项目四之新闻聚合
Apr 02 Python
python pandas dataframe 行列选择,切片操作方法
Apr 10 Python
python统计字母、空格、数字等字符个数的实例
Jun 29 Python
在Python中获取两数相除的商和余数方法
Nov 10 Python
Python 仅获取响应头, 不获取实体的实例
Aug 21 Python
Django认证系统user对象实现过程解析
Mar 02 Python
Python实现在Windows平台修改文件属性
Mar 05 Python
浅谈Python中的模块
Jun 10 Python
python文件名批量重命名脚本实例代码
Apr 22 Python
Pycharm 如何设置HTML文件自动补全代码或标签
May 21 Python
Python 内置函数速查表一览
Jun 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中目录,文件操作详谈
2007/03/19 PHP
php下将图片以二进制存入mysql数据库中并显示的实现代码
2010/05/27 PHP
php和javascript之间变量的传递实现代码
2012/12/19 PHP
php中使用preg_replace函数匹配图片并加上链接的方法
2013/02/06 PHP
php断点续传之文件分割合并详解
2016/12/13 PHP
ThinkPHP5.0多个文件上传后找不到临时文件的修改方法
2018/07/30 PHP
PHP后台实现微信小程序登录
2018/08/03 PHP
JS 动态获取节点代码innerHTML分析 [IE,FF]
2009/11/30 Javascript
关于删除时的提示处理(确定删除吗)
2013/11/03 Javascript
jquery submit ie6下失效的原因分析及解决方法
2013/11/15 Javascript
javascript 解决浏览器不支持的问题
2016/09/24 Javascript
AngularJS表单基本操作
2017/01/09 Javascript
JavaScript中闭包的详解
2017/04/01 Javascript
浅谈webpack下的AOP式无侵入注入
2017/11/12 Javascript
微信小程序有旋转动画效果的音乐组件实例代码
2018/08/22 Javascript
vue+axios 前端实现的常用拦截的代码示例
2018/08/23 Javascript
python模拟登录百度代码分享(获取百度贴吧等级)
2013/12/27 Python
浅谈Python单向链表的实现
2015/12/24 Python
python各种语言间时间的转化实现代码
2016/03/23 Python
Python正则表达式常用函数总结
2017/06/24 Python
Python XML转Json之XML2Dict的使用方法
2019/01/15 Python
Python txt文件加入字典并查询的方法
2019/01/15 Python
Python中new方法的详解
2019/01/15 Python
Python实现自动访问网页的例子
2020/02/21 Python
opencv 实现特定颜色线条提取与定位操作
2020/06/02 Python
区分python中的进程与线程
2020/08/13 Python
丝芙兰法国官网:SEPHORA法国
2016/09/01 全球购物
员工工作表扬信范文
2014/01/13 职场文书
高中毕业生登记表自我鉴定范文
2014/03/18 职场文书
授权委托书怎么写
2014/04/03 职场文书
优秀应届毕业生自荐书
2014/06/29 职场文书
离婚财产分隔协议书
2014/10/23 职场文书
2014年班组建设工作总结
2014/12/01 职场文书
2015年信贷员工作总结
2015/04/28 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
公共场所卫生管理制度
2015/08/05 职场文书