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 相关文章推荐
Linux下python3.7.0安装教程
Jul 30 Python
python实现简单图片物体标注工具
Mar 18 Python
Python 使用 attrs 和 cattrs 实现面向对象编程的实践
Jun 12 Python
centos 安装Python3 及对应的pip教程详解
Jun 28 Python
Django框架表单操作实例分析
Nov 04 Python
python 实现图片上传接口开发 并生成可以访问的图片url
Dec 18 Python
浅谈keras 的抽象后端(from keras import backend as K)
Jun 16 Python
python 最简单的实现适配器设计模式的示例
Jun 30 Python
selenium自动化测试入门实战
Dec 21 Python
opencv实现图像几何变换
Mar 24 Python
python中os.path.join()函数实例用法
May 26 Python
Python 第三方库 openpyxl 的安装过程
Dec 24 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编写注册后Email激活验证的实例代码
2013/03/11 PHP
php实现的RSS生成类实例
2015/04/23 PHP
PHP编程入门的基本语法知识点总结
2016/01/26 PHP
php生成无限栏目树
2017/03/16 PHP
Yaf框架封装的MySQL数据库操作示例
2019/03/06 PHP
IE中radio 或checkbox的checked属性初始状态下不能选中显示问题
2009/07/25 Javascript
Tinymce+jQuery.Validation使用产生的BUG
2010/03/29 Javascript
Prototype源码浅析 String部分(二)
2012/01/16 Javascript
js仿百度登录页实现拖动窗口效果
2016/03/11 Javascript
手机浏览器 后退按钮强制刷新页面方法总结
2016/10/09 Javascript
Angular.JS学习之依赖注入$injector详析
2016/10/20 Javascript
Node.js连接postgreSQL并进行数据操作
2016/12/18 Javascript
详解使用Vue.Js结合Jquery Ajax加载数据的两种方式
2017/01/10 Javascript
深入理解Node module模块
2018/03/26 Javascript
微信小程序自定义单项选择器样式
2019/07/25 Javascript
基于js实现数组相邻元素上移下移
2020/05/19 Javascript
[56:35]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第二局
2016/02/27 DOTA
详解python脚本自动生成需要文件实例代码
2017/02/04 Python
Python中的asyncio代码详解
2019/06/10 Python
对Django中static(静态)文件详解以及{% static %}标签的使用方法
2019/07/28 Python
pytorch ImageFolder的覆写实例
2020/02/20 Python
python简单的三元一次方程求解实例
2020/04/02 Python
Django设置Postgresql的操作
2020/05/14 Python
Django全局启用登陆验证login_required的方法
2020/06/02 Python
Python脚本如何在bilibili中查找弹幕发送者
2020/06/04 Python
浅谈pytorch中torch.max和F.softmax函数的维度解释
2020/06/28 Python
python 如何在测试中使用 Mock
2021/03/01 Python
HTML5触摸事件(touchstart、touchmove和touchend)的实现
2020/05/08 HTML / CSS
资深生产主管自我评价
2013/09/22 职场文书
写演讲稿要注意的六件事
2014/01/14 职场文书
2014年党员干部四风问题自我剖析材料
2014/09/29 职场文书
2014小学二年级班主任工作总结
2014/12/05 职场文书
公务员政审材料
2014/12/23 职场文书
Mysql 如何查询时间段交集
2021/06/08 MySQL
Python制作动态字符画的源码
2021/08/04 Python
baselines示例程序train_cartpole.py的ImportError
2022/05/20 Python