python第七天,dict
在python里边创建字典的方法有如下几种:
>>> dict1= dict((('F',),('C',),('h',),('i',),('s',)))
>>> print(dict1)
{'F': , 'C': , 'h': , 'i': , 's': }
>>> dict1['C']
>>>
>>>
>>> dict2 = {'F':,'C':,'h':,'i':}
>>> dict2['C']
>>>
>>> a = dict(one=,two=,three=)
>>> a
{'one': , 'two': , 'three': }
>>> a['one']
>>>
>>> c = dict(zip(['one','two','three'],[,,]))
>>> c
{'one': , 'two': , 'three': }
>>>
>>> d = dict([('two',),('one',)])
>>> d
{'two': , 'one': }
>>>
也可以通过fromkeys(S[,v])来进行创建一个字典,其中S是键,v是值,是可选的。
# 通过键创建
>>> dict01 = dict.fromkeys((1,2,3))
>>> dict01
{1: None, 2: None, 3: None}
>>>
# 这里需要注意的是v这个值,不管你如何输入,他都会把这个地方的值看为一个,然后分别赋值给键
>>> dict02 = dict.fromkeys((1,2,3),(2,3,4))
>>> dict02
{1: (2, 3, 4), 2: (2, 3, 4), 3: (2, 3, 4)}
>>>
一般我们在使用的字典的时候,经常性会通过键来索引出它的值,例如
dict0={'name':'jerry','sex':'girl','age':12}
#那么 我们通过键取值时经常会用到 dict['name']这种方法来进行取值,但是当我们所取的键并不存在该字典中,就会报错,比如:
print(dict0['phone'])
Traceback (most recent call last):
File "<pyshell#62>", line 1, in <module>
dict0['phone']
KeyError: 'phone'
#那么我们如何可以避免这个问题,因为用这个返回给用户是一个不好的体验,我们想如果它不存在那么返回空,不报错,那我们就用到了get()方法。例如:
>>> dict0.get('phone')
>>>
>>> print(dict0.get('phone'))
None
>>>
关于字典的清空,.clear()和直接用一个{}进行重置的优缺点
#假设我们有一个字典a
>>> a={'name':'jerry'}
>>>
>>> b=a
>>>
>>> b
{'name': 'jerry'}
>>>
>>> a={}
>>> a
{}
>>> b
{'name': 'jerry'}
>>>
#从上边的例子不难看出,当我们清空a之后,但是b是可以访问到以前的值的,我们可以理解为,b中还依然存放这那些值的指针,
#而a只不过是将之前那个值的指针更换为一个新的指针。所以为了彻底清空那个值我们可以通过下面这个方法来清空
>>> a = b
>>>
>>> a.clear()
>>>
>>> a
{}
>>> b
{}
>>>
关于.copy()和直接赋值的区别
#首先我们定义一个a
>>> a={'name':'jerry'}
#利用copy给b赋值
>>> b=a.copy()
#利用常规方法给c赋值
>>> c=a
>>> a
{'name': 'jerry'}
>>> b
{'name': 'jerry'}
>>> c
{'name': 'jerry'}
>>>
#从上边的打印可以看到他们三个全部一样,但是实际果真如此么?
#我们通过给b添加一个新的键值对来看一下
>>> b['age']=12
>>> a
{'name': 'jerry'}
#a并没有改变
>>> b
{'name': 'jerry', 'age': 12}
>>>
#那我们给c一个新的键值对看一下
>>> c['sex']='girl'
>>> a
#a是变化的
{'name': 'jerry', 'sex': 'girl'}
>>> c
{'name': 'jerry', 'sex': 'girl'}
>>>
#我们通过 id()来获取下他们三个的内存地址
>>> id(a)
48909912
>>> id(b)
48924136
>>> id(c)
48909912
#从上边我们可以看出,a c的内存地址是一致的,
#而b是新开辟了一个内存空间,所以当我们更改b的时候a并没有发生变化,
#因为他们并不在一个内存空间,而c发生改变时a也会发生改变就不奇怪了
>>>
和列表一样,字典也提供了pop()来进行删除元素,例如
#删除指定键,并返回相应的值
>>> a
{'name': 'jerry', 'sex': 'girl'}
>>> a.pop('sex')
'girl'
>>> a
{'name': 'jerry'}
>>> #删除随机的一个键值对
>>> a
{'name': 'jerry', 'sex': 'girl'}
>>>
>>> a.popitem()
('sex', 'girl')
>>> a
{'name': 'jerry'}
>>>
setdefault(S[,v]),随机一个位置插入,当没有给值的时候,会默认给一个None
>>> a
{'name': 'jerry'}
>>> a.setdefault('小白')
>>> a
{'name': 'jerry', '小白': None}
>>> a.setdefault('sex','girl')
'girl'
>>>
>>> a
{'name': 'jerry', '小白': None, 'sex': 'girl'}
>>>
update(dict),是利用一个字典来更新另一个字典。
>>> a
{'name': 'jerry', '小白': None, 'sex': 'girl'}
>>>
>>> b={'phone':123456}
>>> b
{'phone': 123456}
#利用b字典来更新a这个字典
>>> a.update(b)
>>> a
{'name': 'jerry', '小白': None, 'sex': 'girl', 'phone': 123456}
>>>
python第七天,dict的更多相关文章
- 简学Python第七章__class面向对象高级用法与反射
Python第七章__class面向对象高级用法与反射 欢迎加入Linux_Python学习群 群号:478616847 目录: Python中关于oop的常用术语 类的特殊方法 元类 反射 一.P ...
- python基础之字典dict和集合set
作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7043642.html python基础之字典dict和集合set 字典dic ...
- 初学Python(七)——控制语句
初学Python(七)——控制语句 初学Python,主要整理一些学习到的知识点,这次是控制语句. if : #-*- coding:utf-8 -*- age=raw_input('input yo ...
- Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数
Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数 目录 Pycharm使用技巧(转载) Python第一天 ...
- Python在七牛云平台的应用(三)简单的人脸识别
前言 这是最后一篇介绍python在七牛云平台的应用了,因为-前两篇文章第一篇分享了怎么安装七牛的官方库以及怎么对自己的空间进行下载上传,删除等行动.而第二篇则分享了怎么利用七牛的API接口,由于七牛 ...
- Python在七牛云平台的应用(二)图片瘦身
(一)七牛云平台的图片瘦身功能简介:(引用自官网) 针对jpeg.png格式图片 瘦身后分辨率不变,格式不变. 肉眼画质不变. 图片体积大幅减少,节省 CDN 流量 官网给的图片压缩率很高,官网给的「 ...
- Python实现七牛云视频播放
这篇文章是使用Python的Web框架Django Rest Framework来提供视频相关的api接口,主要功能包括视频上传.视频转码.视频访问授权.删除视频文件.视频截图功能. 七牛云上的基本概 ...
- 孤荷凌寒自学python第七十九天开始写Python的第一个爬虫9并使用pydocx模块将结果写入word文档
孤荷凌寒自学python第七十九天开始写Python的第一个爬虫9 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 到今天终于完成了对docx模块针对 ...
- 孤荷凌寒自学python第七十八天开始写Python的第一个爬虫8
孤荷凌寒自学python第七十八天开始写Python的第一个爬虫8 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 到今天止基本完成了对docx模块针 ...
- 孤荷凌寒自学python第七十七天开始写Python的第一个爬虫7
孤荷凌寒自学python第七十七天开始写Python的第一个爬虫7 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 今天的学习仍然是在纯粹对docx模 ...
随机推荐
- HTML学习笔记Day3
一.CSS样式 1.每个css样式都必须由两部分组成:选择符(Selector)+声明(Deleration) 注:声明又包括属性(Properyt)和属性值(value) 2.css属性:属性是指定 ...
- 22. Generate Parentheses(ML)
22. Generate Parentheses . Generate Parentheses Given n pairs of parentheses, write a function to ge ...
- C# BackgroundWorker使用总结
查询了一下MSDN文档,其中微软就BackgroundWorker类的功能有这么一个描述(英文的,根据个人理解翻译):BackgroundWorker类允许您在单独的线程上执行某个可能导致用户界面(U ...
- CodeForces7D 字符串hash + dp
https://cn.vjudge.net/problem/20907/origin 长度是 n 的字符串 s,如果它自身是回文数,且它的长度为 的前缀和后缀是 (k - )-回文数,则它被称作 k- ...
- MyBatis-Cache
一.一级缓存 /** * 一级缓存(本地缓存):SqlSession 级别.一级缓存是默认开启的,为 SqlSession 级别的一个Map * 与数据库同一次会话期间查询到的数据会放在本地缓存中,以 ...
- tomcat 下配置ajax 跨域 tomcat font face 跨域 java跨域
tomcat ajax跨域和css字体 font face 跨域一样适用 CORS介绍 它在维基百科上的定义是:跨域资源共享(CORS )是一种网络浏览器的技术规范,它为Web服务器定义了一种方式 ...
- shop++改造之Filter类
基于shop++源码进行商城改造.本来想大展手脚,结果一入手.发觉瞬间淹没了我的才华,sql语句也得贼溜没啥用. 不得不说这个商城源码价值很高,封装的很精屁. 下面是我第一天入手的坑. 数据库建好了表 ...
- ACM-ICPC 2018 南京赛区网络预赛 B The writing on the wall(思维)
https://nanti.jisuanke.com/t/30991 题意 一个n*m的方格矩阵,有的格子被涂成了黑色,问该矩阵中有多少个子矩阵,子矩阵不包含黑色格子. 分析 参考https://bl ...
- 2018牛客网暑期ACM多校训练营(第一场)B Symmetric Matrix(思维+数列递推)
题意 给出一个矩阵,矩阵每行的和必须为2,且是一个主对称矩阵.问你大小为n的这样的合法矩阵有多少个. 分析 作者:美食不可负064链接:https://www.nowcoder.com/discuss ...
- 2018牛客网暑期ACM多校训练营(第一场)J Different Integers(树状数组)
题意 给出一串数字以及q次查询,每次查询l,r],要求求出[1,l]和[r,n]的所有不相同的数字个数. 分析 先对数组进行倍增,变为两倍长,然后查询就变成一个完整的区间.离线处理,按r从小到大排序, ...