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解析xml模块封装代码
Feb 07 Python
python基础教程之序列详解
Aug 29 Python
处理Python中的URLError异常的方法
Apr 30 Python
十个Python程序员易犯的错误
Dec 15 Python
Python实现备份MySQL数据库的方法示例
Jan 11 Python
PyQt5每天必学之切换按钮
Aug 20 Python
详解python中的装饰器
Jul 10 Python
Python实用库 PrettyTable 学习笔记
Aug 06 Python
pip 安装库比较慢的解决方法(国内镜像)
Oct 06 Python
jupyter notebook 添加kernel permission denied的操作
Apr 21 Python
Numpy中np.max的用法及np.maximum区别
Nov 27 Python
Python LMDB库的使用示例
Feb 14 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
使用WordPress发送电子邮件的相关PHP函数用法解析
2015/12/15 PHP
新浪的图片新闻效果
2007/01/13 Javascript
分享2个jQuery插件--jquery.fileupload与artdialog
2014/12/26 Javascript
jQuery实现渐变下拉菜单的简单方法
2015/03/11 Javascript
js实现模拟计算器退格键删除文字效果的方法
2015/05/07 Javascript
JavaScript电子时钟倒计时第二款
2016/01/10 Javascript
JavaScript的React框架中的JSX语法学习入门教程
2016/03/05 Javascript
简单掌握JavaScript中const声明常量与变量的用法
2016/05/21 Javascript
Bootstrap实现水平排列的表单
2016/07/04 Javascript
禁用backspace网页回退功能的实现代码
2016/11/15 Javascript
js addDqmForPP给标签内属性值加上双引号的函数
2016/12/24 Javascript
vue.js从安装到搭建过程详解
2017/03/17 Javascript
详解webpack+es6+angular1.x项目构建
2017/05/02 Javascript
JS 遍历 json 和 JQuery 遍历json操作完整示例
2019/11/11 jQuery
vue使用nprogress实现进度条
2019/12/09 Javascript
在Vue 中获取下拉框的文本及选项值操作
2020/08/13 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
2020/12/04 Javascript
[42:06]2019国际邀请赛全明星赛 8.23
2019/09/05 DOTA
Python 爬虫学习笔记之多线程爬虫
2016/09/21 Python
pandas 使用均值填充缺失值列的小技巧分享
2019/07/04 Python
pytorch 模拟关系拟合——回归实例
2020/01/14 Python
Python生成并下载文件后端代码实例
2020/08/31 Python
HTML5 常用语法一览(列举不支持的属性)
2010/01/26 HTML / CSS
Html5 Canvas动画基础碰撞检测的实现
2018/12/06 HTML / CSS
约瑟夫·特纳男装:Joseph Turner
2017/10/10 全球购物
西班牙自行车和跑步商店:Alltricks
2018/07/07 全球购物
关键字throw与throws的用法差异
2016/11/22 面试题
职称自我鉴定
2013/10/15 职场文书
总经理助理岗位职责
2013/11/08 职场文书
妇产医师自荐信
2014/01/29 职场文书
给老婆的检讨书
2015/01/27 职场文书
2015年转正工作总结范文
2015/04/02 职场文书
辞职离别感言
2015/08/04 职场文书
治理商业贿赂工作总结
2015/08/10 职场文书
当你焦虑迷茫时,请读读这6句话
2019/07/24 职场文书
Win11任务栏无法正常显示 资源管理器不停重启的解决方法
2022/07/07 数码科技