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 相关文章推荐
9种python web 程序的部署方式小结
Jun 30 Python
Python的gevent框架的入门教程
Apr 29 Python
python 巧用正则寻找字符串中的特定字符的位置方法
May 02 Python
Python发送邮件功能示例【使用QQ邮箱】
Dec 04 Python
用xpath获取指定标签下的所有text的实例
Jan 02 Python
python安装pywin32clipboard的操作方法
Jan 24 Python
Python简单处理坐标排序问题示例
Jul 11 Python
python中bs4.BeautifulSoup的基本用法
Jul 27 Python
python3实现高效的端口扫描
Aug 31 Python
使用python实现希尔、计数、基数基础排序的代码
Dec 25 Python
Python作用域与名字空间原理详解
Mar 21 Python
Python classmethod装饰器原理及用法解析
Oct 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
解析php时间戳与日期的转换
2013/06/06 PHP
php实现利用phpexcel导出数据
2013/08/24 PHP
PHP的pcntl多进程用法实例
2015/03/19 PHP
PHP实现验证码校验功能
2017/11/16 PHP
PHP面向对象程序设计之构造方法和析构方法详解
2019/06/13 PHP
jQuery设置和获取HTML、文本和值示例
2014/07/08 Javascript
完美兼容各大浏览器的jQuery插件实现图片切换特效
2014/12/12 Javascript
JavaScript中string转换成number介绍
2014/12/31 Javascript
jQuery插件jFade实现鼠标经过的图片高亮其它变暗
2015/03/14 Javascript
JS简单实现城市二级联动选择插件的方法
2015/08/19 Javascript
js父页面中使用子页面的方法
2016/01/09 Javascript
JavaScript Array对象详解
2016/03/01 Javascript
详解Angular.js中$http拦截器的介绍及使用
2017/07/04 Javascript
Nodejs实现文件上传的示例代码
2017/09/26 NodeJs
使用webpack构建应用的方法步骤
2019/03/04 Javascript
详解在vue-cli3.0中自定css、js和图片的打包路径
2019/08/26 Javascript
Vue+axios封装请求实现前后端分离
2020/10/23 Javascript
JS如何实现在弹出窗口中加载页面
2020/12/03 Javascript
Python读取文件内容的三种常用方式及效率比较
2017/10/07 Python
速记Python布尔值
2017/11/09 Python
python实现K最近邻算法
2018/01/29 Python
pycharm 主题theme设置调整仿sublime的方法
2018/05/23 Python
对pandas里的loc并列条件索引的实例讲解
2018/11/15 Python
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
2019/08/06 Python
Python 实现平台类游戏添加跳跃功能
2020/03/27 Python
Python学习之os模块及用法
2020/06/03 Python
css3实现背景图片拉伸效果像桌面壁纸一样
2013/08/19 HTML / CSS
英国钻石公司:British Diamond Company
2020/02/16 全球购物
几个Shell Script面试题
2012/08/31 面试题
大学毕业生通用求职信
2013/09/28 职场文书
行政管理人员精品工作推荐信
2013/11/04 职场文书
问卷调查计划书
2014/01/10 职场文书
《最可爱的人》教学反思
2014/02/14 职场文书
理财投资建议书
2014/03/12 职场文书
诉前财产保全担保书
2014/05/20 职场文书
如何使用flask将模型部署为服务
2021/05/13 Python