【人生苦短,我学 Python】基础篇——字典(Day10)

举报
AI 菌 发表于 2021/08/05 01:05:47 2021/08/05
1.8k+ 0 0
【摘要】 写在前面:大家好!我是【AI 菌】,一枚爱弹吉他的程序员。我热爱AI、热爱分享、热爱开源! 这博客是我对学习的一点总结与记录。如果您也对 深度学习、机器视觉、算法、Python、C++ 感兴趣,可以关注我的动态,我们一起学习,一起进步~ 我的博客地址为:【AI 菌】的博客 我的Github项目地址是:【AI 菌】的Github -> 前往【人生苦短,我...

写在前面:大家好!我是【AI 菌】,一枚爱弹吉他的程序员。我热爱AI、热爱分享、热爱开源! 这博客是我对学习的一点总结与记录。如果您也对 深度学习、机器视觉、算法、Python、C++ 感兴趣,可以关注我的动态,我们一起学习,一起进步~
我的博客地址为:【AI 菌】的博客
我的Github项目地址是:【AI 菌】的Github

-> 前往【人生苦短,我学 Python】总目录 <-

一、字典

(1) 介绍字典

在 Python 中, 字典是由一系列的 键 — 值对 构成 。每个都与一个相关联,你可以使用键来访问与之相关联的值。在字典中,与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可将任何 Python 对象用作字典中的值。

在字典中,每个键值对 key:value 用冒号 : 分隔,每个键值对之间用逗号分隔,整个字典包括在花括号 {} 中 ,格式如下所示:

dict = {key1 : value1, key2 : value2, key3 : value3}

  
 

除此之外,还需要注意的是,字典需严格遵循下面两条规则:

  • 键必须是唯一的,但值则不必;
  • 值可以取任何数据类型,但键必须是不可变的,只能取如字符串,数字等类型。

(2) 创建字典

1、可以先创建一个空字典,再往里加键和值,演示如下:

dict = {}
dict["name"] = "AI Jun"
dict["major"] = "Computer Vision"
dict["date"] = "2021/2/6"
print(dict)

  
 

输出如下:

{'name': 'AI Jun', 'major': 'Computer Vision', 'date': '2021/2/6'}

  
 

2、当然,也可以直接创建,演示如下:

dict = {'name': 'AI Jun', 'major': 'Computer Vision', 'date': '2021/2/6'}
print(dict)

  
 

输出结果:

{'name': 'AI Jun', 'major': 'Computer Vision', 'date': '2021/2/6'}

  
 

当然,也可以将键换成数字,如下所示:

dict1 = {1: 'AI Jun', 2: 'Computer Vision', 3: '2021/2/6'}
print(dict1)

  
 

输出结果:

{1: 'AI Jun', 2: 'Computer Vision', 3: '2021/2/6'}

  
 

(3) 访问字典

在Python中,我们可以根据键访问值,演示如下:

dict1 = {1: 'AI Jun', 2: 'Computer Vision', 3: '2021/2/6'}
print("dict1中1对应的值是:", dict1[1])
print("dict1中2对应的值是:", dict1[2])
print("dict1中3对应的值是:", dict1[3])

  
 

结果如下:

dict1中1对应的值是: AI Jun
dict1中2对应的值是: Computer Vision
dict1中3对应的值是: 2021/2/6

  
 

二、遍历字典

(1) 遍历所有的键值对

一般采用 for 循环来遍历整个字典。为了分别获取键和值,所以需要声明两个变量,用于存储键值对中的键和值。对于这两个变量,可使用任何名称。下面的代码使用的是key和value,如下所示:

dict = {1: 'AI Jun', 2: 'Computer Vision', 3: '2021/2/6'}
for key, value in dict.items(): print(key, value)

  
 

使用方法 items() 返回一个键值对列表。接下来, for 循环依次将每个键 — 值对存储到指定的两个变量中。输出如下:

1 AI Jun
2 Computer Vision
3 2021/2/6

  
 

注:即便遍历字典时,键值对的返回顺序也与存储顺序不同。 Python 不关心键值对的存储顺序,而只跟踪键和值之间的关联关系。

(2) 遍历字典中所有的键

当不需要使用字典中的值时,我们可以使用 方法keys() 遍历字典中所有的键,并将其一一打印出来,如下所示:

dict = {1: 'AI Jun', 2: 'Computer Vision', 3: '2021/2/6'}
for key in dict.keys(): print(key)

  
 

输出结果:

1
2
3

  
 

事实上,遍历字典时,会默认遍历所有的键。因此,上述代码中的 for key in dict.keys():换成for key in dict:,输出将不变。只是显式地使用方法 keys() 可让代码更容易理解。

注:使用方法title()可使首字母大写,这对于字符串类型的键有用。

(3) 遍历字典中所有的值

当只需要遍历字典中所有的值时,可使用方法 values() ,它返回一个值列表,而不包含任何键。使用方法如下:

dict = {1: 'AI Jun', 2: 'Computer Vision', 3: '2021/2/6'}
for key in dict.values(): print(key)

  
 

输出结果:

AI Jun
Computer Vision
2021/2/6

  
 

这种做法提取字典中所有的值,而没有考虑是否重复。涉及的值很少时,这也许不是问题,但如果数据很多,最终的列表可能包含大量的重复项。为剔除重复项,可使用集合set (集合类似于列表,但每个元素都必须是独一无二的)。使用方法如下所示:

dict = {1: 'AI Jun', 2: 'Computer Vision', 3: '2021/2/6', 4: 'AI Jun'}
for key in set(dict.values()): print(key)

  
 

程序输出:

AI Jun
Computer Vision
2021/2/6

  
 

注:通过方法set()将values()得到的值列表转换成了集合的形式

三、字典操作

(1) 增加键值对

字典是一种动态结构,可随时在其中添加键值对。演示如下:

dict = {1: 'AI Jun', 2: 'Computer Vision'}
dict[3] = '2021/2/6'
print(dict)

  
 

输出结果:

{1: 'AI Jun', 2: 'Computer Vision', 3: '2021/2/6'}

  
 

(2) 删除键值对

对于字典中不再需要的信息,可使用 del 语句将相应的键值对彻底删除。演示如下:

dict = {1: 'AI Jun', 2: 'Computer Vision', 3: '2021/2/6'}
del dict[1]
print(dict)

  
 

输出结果:

{2: 'Computer Vision', 3: '2021/2/6'}

  
 

(3) 修改字典中的值

要修改字典中的值,可依次指定字典名、用方括号括起的键以及与该键相关联的新值。演示如下:

dict = {1: 'AI Jun', 2: 'Computer Vision', 3: '2021/2/6'}
dict[2] = "AI"
print(dict)

  
 

输出结果:

{1: 'AI Jun', 2: 'AI', 3: '2021/2/6'}

  
 

四、内置函数

(1) Python内置函数

函数 描述
len(dict) 返回字典元素个数,即键值对的总数
str(dict) 可以使输出字典以打印的字符串表示

(2) Python字典内置方法

函数 描述
dict.items() 以列表的形式返回可遍历的(键, 值)
dict.keys() 返回一个迭代器,可以使用 list() 来转换为列表
dict.values() 返回一个迭代器,可以使用 list() 来转换为列表
dict.clear() 删除字典内所有元素,得到的是一个空字典
dict.copy() 返回一个字典的浅复制

-> 回到【人生苦短,我学 Python】总目录 <-

在这里插入图片描述
由于水平有限,博客中难免会有一些错误,有纰漏之处恳请各位大佬不吝赐教!

文章来源: ai-wx.blog.csdn.net,作者:AI 菌,版权归原作者所有,如需转载,请联系作者。

原文链接:ai-wx.blog.csdn.net/article/details/113731004

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。