全网最全python字典详解,一文让你再也不用担心字典问题(附案例,源代码)
个人公众号: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
- 点赞
- 收藏
- 关注作者
评论(0)