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 Web开发框架Django
Jun 30 Python
python将一个英文语句以单词为单位逆序排放的方法
Dec 20 Python
Python爬虫实现爬取百度百科词条功能实例
Apr 05 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
May 27 Python
pandas DataFrame 警告(SettingWithCopyWarning)的解决
Jul 23 Python
python字符串分割及字符串的一些常规方法
Jul 24 Python
python字典的遍历3种方法详解
Aug 10 Python
Python学习之路之pycharm的第一个项目搭建过程
Jun 18 Python
python 使用elasticsearch 实现翻页的三种方式
Jul 31 Python
Python日志器使用方法及原理解析
Sep 27 Python
selenium判断元素是否存在的两种方法小结
Dec 07 Python
python 基于selectors库实现文件上传与下载
Dec 31 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 mssql 分页SQL语句优化 持续影响
2009/04/26 PHP
不要轻信 PHP_SELF的安全问题
2009/09/05 PHP
php实现文件下载代码分享
2014/08/19 PHP
PHP中比较时间大小实例
2014/08/21 PHP
php防止sql注入简单分析
2015/03/18 PHP
php实现和c#一致的DES加密解密实例
2017/07/24 PHP
js实现的仿新浪微博完美的时间组件升级版
2011/12/20 Javascript
关于js数组去重的问题小结
2014/01/24 Javascript
node.js中使用socket.io制作命名空间
2014/12/15 Javascript
jQuery实现多级下拉菜单jDropMenu的方法
2015/08/28 Javascript
JavaScript实现的Tween算法及缓冲特效实例代码
2015/11/03 Javascript
浏览器环境下JavaScript脚本加载与执行探析之defer与async特性
2016/01/14 Javascript
把json格式的字符串转换成javascript对象或数组的方法总结
2016/11/03 Javascript
Jquery+Ajax+xml实现中国地区选择三级联动菜单效果(推荐)
2017/06/09 jQuery
微信小程序wx:for循环的实例详解
2018/10/07 Javascript
在小程序开发中使用npm的方法
2018/10/17 Javascript
React如何解决fetch跨域请求时session失效问题
2018/11/02 Javascript
Python smallseg分词用法实例分析
2015/05/28 Python
Python基于回溯法子集树模板解决取物搭配问题实例
2017/09/02 Python
Python生成数字图片代码分享
2017/10/31 Python
怎么使用pipenv管理你的python项目
2018/03/12 Python
Selenium chrome配置代理Python版的方法
2018/11/29 Python
python实现三次样条插值
2018/12/17 Python
Python基于numpy模块实现回归预测
2020/05/14 Python
Python如何执行系统命令
2020/09/23 Python
H5 canvas中width、height和style的宽高区别详解
2018/11/02 HTML / CSS
比利时买床:Beter Bed
2017/12/06 全球购物
销售工作岗位职责
2013/12/24 职场文书
家长评语和期望
2014/02/10 职场文书
学生安全教育材料
2014/02/14 职场文书
超市开学活动方案
2014/03/01 职场文书
房屋租赁合同协议书范本
2014/10/19 职场文书
负责培养人意见
2015/06/05 职场文书
黄埔军校观后感
2015/06/10 职场文书
5种方法告诉你如何使JavaScript 代码库更干净
2021/09/15 Javascript
Golang 实现 WebSockets 之创建 WebSockets
2022/04/24 Golang