一、字典的创建和修改

>>> p=dict(((1,'one'),(2,'two'),(3,'Three'))) #用p=dict((()))创建
>>> p
{1: 'one', 2: 'two', 3: 'Three'}
>>> t=dict(([1,'一'],[2,'二'],[3,'三']))#用p=dict(([]))创建
>>> t
{1: '一', 2: '二', 3: '三'}
>>> t[1]="壹" #修改
>>> t
{1: '壹', 2: '二', 3: '三'} #添加
>>> t[4]='四'
>>> t
{1: '壹', 2: '二', 3: '三', 4: '四'}
>>>
>>> d=dict(芳芳='高中二年级',哈瑞='小学六年级',cc='小学一年级',艾米尼='幼儿园小班') #用d=dict(a=b)创建,注意,键是字符的话也不加引号
>>> d
{'芳芳': '高中二年级', '哈瑞': '小学六年级', 'cc': '小学一年级', '艾米尼': '幼儿园小班'}
>>>
>>> p=dict(1='高中',2='初中',3='小学') *#用这种关键字的方法键不能是数字,我也不明白为什么???*
SyntaxError: expression cannot contain assignment, perhaps you meant "=="?

二、字典的遍历:

>>> for i in d.keys():   #遍历键print(i)
1
2
3
>>> for i in d.values():#遍历值print(i)
一
two
three
>>> for i in d.items():#遍历键值对print(i)
(1, '一')
(2, 'two')
(3, 'three')
>>>

三、方法
1.get()
描述
Python 字典 get() 函数返回指定键的值,如果值不在字典中返回默认值。
get()方法语法:
dict.get(key, default=None)
参数
key – 字典中要查找的键。
default – 如果指定键的值不存在时,返回该默认值。
get()方法用在文件统计字数中很实用,count=f.get(d[key],0)+1

>>> d=dict(([1,'one'],[2,'two'],[3,'three']))
>>> d
{1: 'one', 2: 'two', 3: 'three'}
>>> d.get(3,'Default')  #有key==3的键,所以返回其值。
'three'
>>> d.get(4,'Default')#无key==4的键,所以返回给定的默认值'Default'
'Default'
>>>

2、fromkeys()
classmethod fromkeys(iterable[, value])
使用来自 iterable 的键创建一个新字典,并将键值设为 value。

fromkeys() 是一个返回新字典的类方法。 value 默认为 None。 所有值都只引用一个单独的实例,因此让 value 成为一个可变对象例如空列表通常是没有意义的。

>>> d={}
>>> d.fromkeys((1,2,3),'number')
{1: 'number', 2: 'number', 3: 'number'}
>>> d.fromkeys((1,2,3))
{1: None, 2: None, 3: None}
>>> d  #注意:fromkeys方法是新建一个字典,原字典不变。
{}
>>> d.fromkeys((1,2,3),('number1','number2','number3'))
{1: ('number1', 'number2', 'number3'), 2: ('number1', 'number2', 'number3'), 3: ('number1', 'number2', 'number3')}
>>> #fromkeys的value只能是一个值。

3.clear()清空

>>> d=dict(芳芳='高中二年级',哈瑞='小学六年级',cc='小学一年级',艾米尼='幼儿园小班')
>>> d
{'芳芳': '高中二年级', '哈瑞': '小学六年级', 'cc': '小学一年级', '艾米尼': '幼儿园小班'}
>>> p=d   #注意,通过赋值这种方式拷贝,它只是给a列表的地址新增加了一个叫做c的标签,也就是说a和c都指向的是同一个列表地址,所以即便c是你拷贝后的列表,当你对c进行操作时,a也会发生一模一样的变化。
>>> p
{'芳芳': '高中二年级', '哈瑞': '小学六年级', 'cc': '小学一年级', '艾米尼': '幼儿园小班'}
>>> d.clear()
>>> d
{}
>>> p
{}
>>>
>>> id(d)
4328158784
>>> id(p)
4328158784
>>>

注意:有人会用d={}的方法来清空,但其实这种清空并不彻底。

>>> d=dict(芳芳='高中二年级',哈瑞='小学六年级',cc='小学一年级',艾米尼='幼儿园小班')
>>> d
{'芳芳': '高中二年级', '哈瑞': '小学六年级', 'cc': '小学一年级', '艾米尼': '幼儿园小班'}
>>> p=d
>>> p
{'芳芳': '高中二年级', '哈瑞': '小学六年级', 'cc': '小学一年级', '艾米尼': '幼儿园小班'}
>>> d={}
>>> d
{}
>>> p  #可以看到p并没有清空,这是因为d={}方式是有新建了一个地址来存放d={}
{'芳芳': '高中二年级', '哈瑞': '小学六年级', 'cc': '小学一年级', '艾米尼': '幼儿园小班'}
>>>
>>>> id(d)
4345148544
>>> id(p)
4345148480
>>>

4.copy()
浅拷贝

>>> d=dict(芳芳='高中二年级',哈瑞='小学六年级',cc='小学一年级',艾米尼='幼儿园小班')
>>> c=d
>>> a=d.copy()
>>> c
{'芳芳': '高中二年级', '哈瑞': '小学六年级', 'cc': '小学一年级', '艾米尼': '幼儿园小班'}
>>> a
{'芳芳': '高中二年级', '哈瑞': '小学六年级', 'cc': '小学一年级', '艾米尼': '幼儿园小班'}
>>> d
{'芳芳': '高中二年级', '哈瑞': '小学六年级', 'cc': '小学一年级', '艾米尼': '幼儿园小班'}
>>> id(a)   #a=d.copy(),可以看出,通过d.copy()的a与原字典d的id不同,这是浅拷贝。具体也可见,我的另一篇专门总结赋值拷贝、浅拷贝、深拷贝的博文。
4342251072
>>> id(c)
4344997056  #c=d
>>> id(d)
4344997056    #可以看出,通过赋值拷贝的c与原字典d的id相同
>>>

5.pop()与popitem()

pop(key[, default])
如果 key 存在于字典中则将其移除并返回其值,否则返回 default。 如果 default 未给出且 key 不存在于字典中,则会引发 KeyError。

popitem()
从字典中移除并返回一个 (键, 值) 对。 键值对会按 LIFO 的顺序被返回。

popitem() 适用于对字典进行消耗性的迭代,这在集合算法中经常被使用。 如果字典为空,调用 popitem() 将引发 KeyError。

在 3.7 版更改: 现在会确保采用 LIFO 顺序。 在之前的版本中,popitem() 会返回一个任意的键/值对。

>>> d.pop('芳芳')
'高中二年级'
>>> d
{'哈瑞': '小学六年级', 'cc': '小学一年级', '艾米尼': '幼儿园小班'}
>>> d.pop('小芳','大学')  #无‘小芳’这个键,所以返回默认的值'大学'
'大学'
>>> d.popitem()
('艾米尼', '幼儿园小班')
>>> d.popitem()
('cc', '小学一年级')
>>>
  1. setdefault()
    setdefault(key[, default])¶
    如果字典存在键 key ,返回它的值。如果不存在,插入值为 default 的键 key ,并返回 default 。 default 默认为 None。
    注意:setdefault()与get()方法比较相似,但是最大的不同是,如果字典里面不存在键key,那么,setdefault()方法会给字典添加一个{key:default}的键值对,但是get()方法并不会改变原字典,而只是会返回一个default的值。
>>> d
{'哈瑞': '小学六年级', 'cc': '小学一年级', '艾米尼': '幼儿园小班', '小芳': '学前班'}
>>> d={'哈瑞': '小学六年级', 'cc': '小学一年级', '艾米尼': '幼儿园小班'}
>>> d.get('小芳','学前班')
'学前班'
>>> d       #原字典中没有键为小芳的键值对,用了get方法后,原字典并没有变
{'哈瑞': '小学六年级', 'cc': '小学一年级', '艾米尼': '幼儿园小班'}
>>> d.setdefault('小芳','学前班')
'学前班'
>>> d      #原字典中没有键为小芳的键值对,用了setdefault方法后,原字典添加上了新的键值对{'小芳': '学前班'}
{'哈瑞': '小学六年级', 'cc': '小学一年级', '艾米尼': '幼儿园小班', '小芳': '学前班'}
>>>
  1. update()
    update([other])
    使用来自 other 的键/值对更新字典,覆盖原有的键。 返回 None。

update() 接受另一个字典对象,或者一个包含键/值对(以长度为二的元组或其他可迭代对象表示)的可迭代对象。 如果给出了关键字参数,则会以其所指定的键/值对更新字典: d.update(red=1, blue=2)。

可以通过update方法来添加、修改键值对:

>>> d
{'哈瑞': '小学六年级', 'cc': '小学一年级', '艾米尼': '幼儿园小班', '小芳': '学前班'}
>>>
>>> dx={'哈瑞':'初中一年级','珂玛尼':'小学二年级'}
>>> d.update(dx) #修改哈瑞的值,添加珂玛尼键值对
>>> d
{'哈瑞': '初中一年级', 'cc': '小学一年级', '艾米尼': '幼儿园小班', '小芳': '学前班', '珂玛尼': '小学二年级'}
>>> d.update(爱奈斯='小学五年级',cc='小学二年级') #通过关键字的方法添加爱奈斯键值对,修改cc的值
>>> d
{'哈瑞': '初中一年级', 'cc': '小学二年级', '艾米尼': '幼儿园小班', '小芳': '学前班', '珂玛尼': '小学二年级', '爱奈斯': '小学五年级'}
>>>

四、查找成员是否为键:

>>> d=dict(芳芳='高中二年级',哈瑞='小学六年级',cc='小学一年级',艾米尼='幼儿园小班')
>>> '芳芳'in d #注意,这里查找的是字典d的键
True
>>> '艾米尼'not in d
False
>>>

注:本文有些内容参考以下网站:
https://docs.python.org/zh-cn/3.8/library/stdtypes.html?highlight=dict%20get#dict.get
https://www.runoob.com/python3/python3-basic-syntax.html

【小甲鱼零基础入门学python】学习总结之字典相关推荐

  1. 小甲鱼零基础入门学习Python(绝对干货,值得学习)

    小甲鱼零基础入门学习Python(绝对干货,值得学习) 链接: https://pan.baidu.com/s/1jJmIrlk 密码: ktp2

  2. 零基础入门python小甲鱼-小甲鱼零基础入门学习Python百度云下载 | 宅男君

    Python编程语言可以在不同平台上使用,比如Windows.MAC.Linux操作系统.通常情况下,一个Python程序在你自己的Windows系统上运行,也可以在别人的MAC系统上运行.Pytho ...

  3. python零基础入门教程百度云-小甲鱼零基础入门学习Python百度云下载 | 宅男君

    Python编程语言可以在不同平台上使用,比如Windows.MAC.Linux操作系统.通常情况下,一个Python程序在你自己的Windows系统上运行,也可以在别人的MAC系统上运行.Pytho ...

  4. 小甲鱼python教程视频怎么样-小甲鱼零基础入门学习Python视频教程全套96集

    资源介绍 教程名称: 小甲鱼零基础入门学习Python视频教程全套96集 课程简介: xa0 xa0 Python具有跨平台特点,Python可以在各种不同类型的计算机上运行,Windows.MAC. ...

  5. 小甲鱼零基础入门python教程视频_绝对干货!小甲鱼零基础入门Python视频教程全套96集,值得学习...

    原标题:绝对干货!小甲鱼零基础入门Python视频教程全套96集,值得学习 简介: 今日分享资源为:小甲鱼零基础入门免费学习Python全套教学视频,共96套. 小甲鱼教学视频生动有趣幽默,强烈推荐给 ...

  6. 小甲鱼零基础入门学习python--课后作业(更新至第19讲,持续更新)

    本章内容: 小甲鱼零基础入门学习python--课后作业 1.基础部分的作业 2.函数部分的作业 3.字典.集合.文件部分作业 4.异常 5.EasyGui 6.类.对象.魔法方法 7.模块 8.爬虫 ...

  7. 零基础入门学Python(十二)—— 魔法方法(下)

    零基础入门学Python系列内容的学习目录→\rightarrow→零基础入门学Python系列内容汇总. 魔法方法(下) 1. 构造和析构 2. 算术运算 3. 简单定制 4. 属性访问 5. 描述 ...

  8. 跟艾文学编程《零基础入门学Python》(1)Python 基础入门

    作者: 艾文,计算机硕士学位,企业内训讲师和金牌面试官,现就职BAT一线大厂公司资深算法专家. 邮箱: 1121025745@qq.com 博客:https://wenjie.blog.csdn.ne ...

  9. 跟艾文学编程《零基础入门学Python》(4)Python 面向对象

    作者: 艾文,计算机硕士学位,企业内训讲师和金牌面试官,公司资深算法专家,现就职BAT一线大厂. 邮箱: 1121025745@qq.com 博客:https://wenjie.blog.csdn.n ...

最新文章

  1. linux 隧道服务器,两台linux服务器上建立ip隧道 | 菜鸟博客
  2. Python剑指offer:数组中数值和下标相等的元素
  3. MySQL事务的四种隔离级别,mysql中的不可重复读和幻读的区别,Repeatable read可重复读隔离级别下怎么不存在幻读问题?
  4. vuejs滚动条_vuescroll-一款基于vuejs2.x的虚拟滚动条
  5. 为何 5G、物联网和区块链,可以成为科技铁三角?
  6. Linux内核project导论——网络:Netfilter概览
  7. Eclipse的部署项目时的配置
  8. 【NOI2014】魔法森林
  9. Python数据结构与算法(附录)——块状链表的动态调整
  10. 【Unity】Geometry Shader实现
  11. 为什么做了梦第二天想不起来_做过的梦为什么总是想不起来?
  12. c语言自学的视频,最适合自学的C语言自学视频
  13. 一般毕业论文的查重要求有哪些?
  14. 宏观视角看抖音全生态
  15. 【基础知识】【模块介绍】电机编码器
  16. 人脸识别扫描(活体检测功能,眨眼、摇头、点头),身份证认证
  17. *CF1132D.Stressful Training(二分+队列+贪心)
  18. iOS之深入解析App Thinning的应用瘦身优化
  19. 互信息(Mutual Information)介绍
  20. 谭浩强C++ 第九章

热门文章

  1. tp小程序微信支付部分代码
  2. Java中request有哪些方法,Java--获取request中所有参数的方法
  3. 聊聊网站被运营商劫持
  4. Spine之六——纹理打包Texture packing
  5. 蔬菜水果肉类奶制品厨房用具英语表达
  6. 苹果手机网速慢怎么办?这些方法帮你解决网速慢的问题!
  7. Unity Shader入门精要第七章 基础纹理渐变纹理
  8. 林俊杰豪掷78万加入「元宇宙炒房团」!元宇宙资产有多贵:1548万买土地,414万买虚拟游艇...
  9. Hive数据表删除数据操作
  10. 微信公众号内容如何获取,python教你抓包分析并保存数据