在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的更多相关文章

  1. 简学Python第七章__class面向对象高级用法与反射

    Python第七章__class面向对象高级用法与反射 欢迎加入Linux_Python学习群  群号:478616847 目录: Python中关于oop的常用术语 类的特殊方法 元类 反射 一.P ...

  2. python基础之字典dict和集合set

    作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7043642.html python基础之字典dict和集合set 字典dic ...

  3. 初学Python(七)——控制语句

    初学Python(七)——控制语句 初学Python,主要整理一些学习到的知识点,这次是控制语句. if : #-*- coding:utf-8 -*- age=raw_input('input yo ...

  4. Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数

    Python第七天   函数  函数参数   函数里的变量   函数返回值  多类型传值     函数递归调用   匿名函数   内置函数 目录 Pycharm使用技巧(转载) Python第一天   ...

  5. Python在七牛云平台的应用(三)简单的人脸识别

    前言 这是最后一篇介绍python在七牛云平台的应用了,因为-前两篇文章第一篇分享了怎么安装七牛的官方库以及怎么对自己的空间进行下载上传,删除等行动.而第二篇则分享了怎么利用七牛的API接口,由于七牛 ...

  6. Python在七牛云平台的应用(二)图片瘦身

    (一)七牛云平台的图片瘦身功能简介:(引用自官网) 针对jpeg.png格式图片 瘦身后分辨率不变,格式不变. 肉眼画质不变. 图片体积大幅减少,节省 CDN 流量 官网给的图片压缩率很高,官网给的「 ...

  7. Python实现七牛云视频播放

    这篇文章是使用Python的Web框架Django Rest Framework来提供视频相关的api接口,主要功能包括视频上传.视频转码.视频访问授权.删除视频文件.视频截图功能. 七牛云上的基本概 ...

  8. 孤荷凌寒自学python第七十九天开始写Python的第一个爬虫9并使用pydocx模块将结果写入word文档

    孤荷凌寒自学python第七十九天开始写Python的第一个爬虫9 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 到今天终于完成了对docx模块针对 ...

  9. 孤荷凌寒自学python第七十八天开始写Python的第一个爬虫8

    孤荷凌寒自学python第七十八天开始写Python的第一个爬虫8 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 到今天止基本完成了对docx模块针 ...

  10. 孤荷凌寒自学python第七十七天开始写Python的第一个爬虫7

    孤荷凌寒自学python第七十七天开始写Python的第一个爬虫7 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 今天的学习仍然是在纯粹对docx模 ...

随机推荐

  1. (编辑距离问题 线性DP) nyoj1431-DNA基因鉴定

    题目描述: 我们经常会听说DNA亲子鉴定是怎么回事呢?人类的DNA由4个基本字母{A,C,G,T}构成,包含了多达30亿个字符.如果两个人的DNA序列相差0.1%,仍然意味着有300万个位置不同,所以 ...

  2. nginx+keepalived高可用web负载均衡

    一:安装环境 准备2台虚拟机,都安装好环境 centos 7keepalived:vip: 192.168.1.112192.168.1.110 nginxip 192.168.1.109 maste ...

  3. Ajax和Json的介绍(一)

    Ajax简介: 优点: 1.Ajax是一种网页开发技术,异步JavaScript和XML;(这样叫的原因是是因为ajax传递数据是用json格式的,而json和xml又类似,都是以键值对,josn是& ...

  4. 苹果中国全系降价:iphone最高降500元,用户可退差价

    本文首发于:风云社区SCOEE(社区旨在普惠软件.图片.音乐.视频.素材.文档等互联网资源.为大众提供多样化的服务,以及主要涵盖学术科学.电脑技术.文化人文.体育健身等领域的知识和信息,获得用户的支持 ...

  5. Intellij Idea识别Java Web项目

    使用maven生成一个Java项目,手动添加相应的web目录WEB_INF,web.xml等,此时idea没有自动识别为web项目,此时编辑web.xml文件会出现一些不该出现的错误,需要做的就是让i ...

  6. Java的一些基本术语

    1. 反射 获取类本身,就叫“反射”,有以下3种方式: // 通过“实例”获取类 String str = "hello"; Class cls1 = str.getClass() ...

  7. MySQL高可用架构之Mycat-关于Mycat安装和参数设置详解

    MySQL高可用架构之Mycat-关于Mycat安装和参数设置详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Mycat介绍 1>.什么是Mycat Mycat背后是 ...

  8. 使用二进制安装包的方式单机部署MySQL8.0.13

    使用二进制安装包的方式单机部署MySQL8.0.13 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 关于MySQL的介绍我这里就不多做赘述了,如何下载MySQL详情请参考:MySQ ...

  9. linux下查看主板内存槽与内存信息

    1.查看内存槽数.那个槽位插了内存,大小是多少 dmidecode|grep -P -A5 "Memory\s+Device"|grep Size|grep -v Range 2. ...

  10. Java Web之HTML5

    终于学到Java Web这一章节了,首先来了解一下HTML5的一些新知识点吧,我直接贴出HTML5代码看一下: <!DOCTYPE html> <html lang="en ...