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爬虫之打包生成exe文件
Nov 06 Python
python实现从ftp服务器下载文件的方法
Apr 30 Python
Python基于hashlib模块的文件MD5一致性加密验证示例
Feb 10 Python
Python中pandas dataframe删除一行或一列:drop函数详解
Jul 03 Python
Django ManyToManyField 跨越中间表查询的方法
Dec 18 Python
PYQT5设置textEdit自动滚屏的方法
Jun 14 Python
Python爬虫实现使用beautifulSoup4爬取名言网功能案例
Sep 15 Python
python Qt5实现窗体跟踪鼠标移动
Dec 13 Python
python基于celery实现异步任务周期任务定时任务
Dec 30 Python
Python插件机制实现详解
May 04 Python
Python -m参数原理及使用方法解析
Aug 21 Python
Python中tqdm的使用和例子
Sep 23 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
Smarty中常用变量操作符汇总
2014/10/27 PHP
PHP基于imap获取邮件实例
2014/11/11 PHP
PHP-FPM 设置多pool及配置文件重写操作示例
2019/10/02 PHP
win10下 php安装seaslog扩展的详细步骤
2020/12/04 PHP
js跨域和ajax 跨域问题的实现思路
2009/09/05 Javascript
jQuery EasyUI API 中文文档 - ComboGrid 组合表格
2011/10/13 Javascript
Javascript算符的优先级介绍
2013/03/20 Javascript
js获得参数的getParameter使用示例
2014/02/26 Javascript
JQuery中DOM实现事件移除的方法
2015/06/13 Javascript
JavaScript中字符串(string)转json的2种方法
2015/06/25 Javascript
JavaScript数据库TaffyDB用法实例分析
2015/07/27 Javascript
jQuery实现鼠标选文字发新浪微博的方法
2016/04/02 Javascript
谈谈第三方App接入微信登录 解读
2016/12/27 Javascript
bootstrap精简教程_动力节点Java学院整理
2017/07/14 Javascript
JS动态添加的div点击跳转到另一页面实现代码
2017/09/30 Javascript
详解vue移动端日期选择组件
2018/02/22 Javascript
解决vue中监听input只能输入数字及英文或者其他情况的问题
2018/08/30 Javascript
layer扩展打开/关闭动画的方法
2019/09/23 Javascript
VUE中使用HTTP库Axios方法详解
2020/02/05 Javascript
Python3 queue队列模块详细介绍
2018/01/05 Python
Sanic框架配置操作分析
2018/07/17 Python
将python图片转为二进制文本的实例
2019/01/24 Python
Numpy一维线性插值函数的用法
2020/04/22 Python
Python预测2020高考分数和录取情况
2020/07/08 Python
HTML5新增的Css选择器、伪类介绍
2013/08/07 HTML / CSS
世界顶级足球门票网站:Live Football Tickets
2017/10/14 全球购物
Shop Apotheke瑞士:您的健康与美容网上商店
2019/10/09 全球购物
如何清空Session
2015/02/23 面试题
模范家庭事迹材料
2014/02/10 职场文书
工商管理专业毕业生求职信
2014/05/26 职场文书
演讲比赛的活动方案
2014/08/28 职场文书
留学推荐信(中英文版)
2015/03/26 职场文书
业务内勤岗位职责
2015/04/13 职场文书
教师教育教学随笔
2015/08/15 职场文书
校园文化艺术节开幕词
2016/03/04 职场文书
Python使用openpyxl批量处理数据
2021/06/23 Python