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实现360的字符显示界面
Feb 21 Python
Python读取excel指定列生成指定sql脚本的方法
Nov 28 Python
对pandas处理json数据的方法详解
Feb 08 Python
Django如何防止定时任务并发浅析
May 14 Python
python multiprocessing多进程变量共享与加锁的实现
Oct 02 Python
关于Python-faker的函数效果一览
Nov 28 Python
Python实现企业微信机器人每天定时发消息实例
Feb 25 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
May 16 Python
django的403/404/500错误自定义页面的配置方式
May 21 Python
Keras 实现加载预训练模型并冻结网络的层
Jun 15 Python
requests在python中发送请求的实例讲解
Feb 17 Python
Python中使用Opencv开发停车位计数器功能
Apr 04 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 adodb连接带密码access数据库实例,测试成功
2008/05/14 PHP
php格式化日期和时间格式化示例分享
2014/02/24 PHP
PHP写的资源下载防盗链类分享
2014/05/12 PHP
PHP安全的URL字符串base64编码和解码
2014/06/19 PHP
ThinkPHP实现动态包含文件的方法
2014/11/29 PHP
php实现简单爬虫的开发
2016/03/28 PHP
Javascript的一种模块模式
2008/03/22 Javascript
利用404错误页面实现UrlRewrite的实现代码
2008/08/20 Javascript
JS获取文本框,下拉框,单选框的值的简单实例
2014/02/26 Javascript
JS截取字符串实例详解
2015/11/24 Javascript
关于angularJs指令的Scope(作用域)介绍
2016/10/25 Javascript
原生js封装添加class,删除class的实例
2017/11/06 Javascript
js中获取URL参数的共用方法getRequest()方法实例详解
2018/10/24 Javascript
实现Vue的markdown文档可以在线运行的方法示例
2018/12/11 Javascript
JavaScript实现邮箱后缀提示功能的示例代码
2018/12/13 Javascript
详解Vue中watch对象内属性的方法
2019/02/01 Javascript
JavaScript实现PC端横向轮播图
2020/02/07 Javascript
jquery检测上传文件大小示例
2020/04/26 jQuery
原生JS实现弹幕效果的简单操作指南
2020/11/10 Javascript
python自动化测试实例解析
2014/09/28 Python
如何在Python函数执行前后增加额外的行为
2016/10/20 Python
python实现windows壁纸定期更换功能
2019/01/21 Python
Python读写文件基础知识点
2019/06/10 Python
Python 日期区间处理 (本周本月上周上月...)
2019/08/08 Python
Win 10下Anaconda虚拟环境的教程
2020/05/18 Python
详解python模块pychartdir安装及导入问题
2020/10/22 Python
什么是Smart Navigation?
2016/07/03 面试题
优秀应届毕业生推荐信
2014/02/18 职场文书
竞选班委演讲稿
2014/04/28 职场文书
乡镇精神文明建设汇报材料
2014/08/15 职场文书
泰山导游词
2015/02/02 职场文书
车队安全员岗位职责
2015/02/15 职场文书
2015年高三年级组工作总结
2015/07/21 职场文书
Python 如何解决稀疏矩阵运算
2021/05/26 Python
图解排序算法之希尔排序Java实现
2021/06/26 Java/Android
Python爬虫 简单介绍一下Xpath及使用
2022/04/26 Python