全网最全python字典详解,一文让你再也不用担心字典问题(附案例,源代码)

举报
yk 坤帝 发表于 2022/01/10 23:28:44 2022/01/10
【摘要】 个人公众号:yk 坤帝 获取完整资源 我们都知道序列使用索引来访问各个值,而Python中还提供一种数据结构,可以通过名称来访问其各个值,这种数据结构就是映射(mapping)。在映射中,较常...

个人公众号:yk 坤帝
获取完整资源

我们都知道序列使用索引来访问各个值,而Python中还提供一种数据结构,可以通过名称来访问其各个值,这种数据结构就是映射(mapping)。在映射中,较常用的就是字典,字典通过键值对进行索引,这里的键可能是数、字符串或元组等等。

字典的键值对是它的特点,而键值对也被称为项(item)。每个键与其值之间都用冒号(:)进行分隔,各个项之间用逗号分隔,同时被包括在花括号内,类似于{key1:value1, key2:value2}的格式。为了实现字典中的快速查找,键必须是独一无二的,这样给定键就能直接找到该键对应的值,而值是可以重复的。

空字典中没有任何项,用两个花括号表示,类似于:{}的格式。

下面则详细介绍如何创建以及使用字典。

1. 创建字典

创建字典的最简单方式就是直接赋值,但需要注意的是保持键的唯一性,否则会导致后赋值的一个键值对替换掉前面的。键的数据类型必须是不可变的,如字符串、数字或元组等,而值可以取任何数据类型。

【例 3-31】

In[1]:	number_dict = {'a':1,'b':2,'c':3,'c':4}
In[2]	number_dict
Out[2]	{'a': 1, 'b': 2, 'c': 4}

  
 
  • 1
  • 2
  • 3
可以使用dict方法从其他的映射或键值对来转换创建字典。

【例 3-32】

  
 
  • 1
  • 2
  • 3
In[3]:	student = [('name','Mickey'),('age',24)]
In[4]	d = dict(student)
In[5]	d
Out[5]	{'age': 24, 'name': 'Mickey'}

  
 
  • 1
  • 2
  • 3
  • 4

2. 字典操作

字典也有索引,删除,修改对应项的值等操作,操作的基本思想与序列很像。下面通过举例说明。

【例 3-33】

In[6]:	student_dict={'Tom':24,'Mickey':23,'Marry':15,'Abel':18}
In[7]	student_dict
Out[7]	{'Abel': 18, 'Marry': 15, 'Mickey': 23, 'Tom': 24}

  
 
  • 1
  • 2
  • 3

使用len方法可以计算字典中包含的键值对数目。

【例 3-34】

In[8]	len(student_dict) 
Out[8]	4

  
 
  • 1
  • 2
索引时使用键做下标来找到相应的值。
【例 3-35】

  
 
  • 1
  • 2
In[9]	student_dict['Marry']
Out[9]	15

  
 
  • 1
  • 2
对字典的值进行修改时,常使用赋值的方法。
【例 3-36】

  
 
  • 1
  • 2
In[10]	student_dict['Tom'] = 28
In[11]	student_dict
Out[11]	{'Abel': 18, 'Marry': 15, 'Mickey': 23, 'Tom': 28}

  
 
  • 1
  • 2
  • 3

使用del命令删除字典中对应的键值对。

【例 3-37】

  
 
  • 1
In[12]	del student_dict['Mickey']
In[13]	student_dict
Out[13]	{'Abel': 18, 'Marry': 15, 'Tom': 28}

  
 
  • 1
  • 2
  • 3
通过in命令来判断某一关键字是否在字典中。
【例 3-38】

  
 
  • 1
  • 2
In[14]	'Mickey' in student_dict
Out[14]	False

  
 
  • 1
  • 2

从这些基本的操作来看,字典和列表的操作有多个相同之处,但也存在一些重要的不同之处:

首先,列表的索引只能对应于相应的位置,而字典中的键可以多种多样,并不是一定要设置为整数,只要保证字典的键是不可变的,则实数、字符串、元组等类型都可以。

其次,通过赋值列表无法增加新的项,即不能给列表中没有的元素赋值。但是即便是字典中原本没有的键值,也可以通过赋值来创建新项。

【例 3-39】

In[15]	student_dict['Alan'] = 24
In[16]	student_dict
Out[16]	{'Abel': 18, 'Alan': 24, 'Marry': 15, 'Tom': 28}

  
 
  • 1
  • 2
  • 3

3. 字典方法

介绍了字典的操作后,接下来就介绍一些很有用的字典方法。
1)clear方法:使用该方法进行彻底的清除,删除所有的字典项,清除成功后返回值为None。当然,除了使用clear方法外,还可以通过给字典赋空值来清空此字典。

【例 3-40】

In[17]	student_dict = {'Abel': 18, 'Alan': 24}
In[18]	student_dict.clear()
In[19]	student_dict
Out[19]	{}

  
 
  • 1
  • 2
  • 3
  • 4

2)copy方法:使用该方法进行复制,返回一个新字典,其包含与原来的字典相同的键值对。

【例 3-41】

In[20]	x = {'username': '201820091', 'grades': [90,87,10]}
In[21]	y = x.copy()
In[22]	y
Out[22]	{'grades': [90, 87, 10], 'username': '201820091'}

  
 
  • 1
  • 2
  • 3
  • 4

get方法:get方法是用来快速访问字典的项。

访问get指定的键,与普通的字典查找结果一样,而使用get访问不存在的键是不会引发异常的,只是返回None值。

【例 3-42】

In[23]	d = {}
In[24]	print(d['name'])
Out[24]	KeyError: 'name'
In[25]	print(d.get('name'))
Out[25]	None
In[26]	d['name'] = 'Eric'
In[27]	d.get('name')
Out[27]	'Eric'

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

同时,get方法还可以指定“默认”值,这样当未找到时,返回的将是指定的默认值而不是None。

【例 3-43】

In[28]	d.get('name', 'N/A')
Out[28]	'N/A'

  
 
  • 1
  • 2

4)keys方法:函数keys()返回一个字典的键值视图,列出字典中的所有键。

【例 3-44】

In[29]	x = {'username': '201820091', 'grades': [90,87,10]}
In[30]	x.keys()
Out[30]	dict_keys(['username', 'grades'])
5)pop方法:该方法首先找出指定键值对,然后将他们从字典中删除。

  
 
  • 1
  • 2
  • 3
  • 4

【例 3-45】

In[31]	d = {'x': 1, 'y': 2}
In[32]	d.pop('x')
Out[32]	1
In[33]	d
Out[33]	{'y': 2}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

**6)items方法:**函数items()将字典转换成列表,返回一个包含所有字典项的列表,其中每个元素都为(key, value)的形式。字典项在列表中的排列顺序不确定。返回值的类型为字典视图,可以对其执行成员资格检查。

【例 3-46】

In[34]	student = {'year': '2015', 'grades': [90,87,10]}
In[35]	student.items()
Out[35]	dict_items([('year', '2015'), ('grades', [90, 87, 10])])
In[36]	len(student.items())
Out[36]	2
In[37]	('year', '2015') in student.items()
Out[37]	True

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

个人公众号:yk 坤帝
获取完整资源

文章来源: blog.csdn.net,作者:yk 坤帝,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_45803923/article/details/122416754

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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