这是我参与更文挑战的第 9 天,活动详情查看: 更文挑战
回顾复习
字典是可变数据类型,由键值对形式出现。
-
键对象,是唯一的,具有hashable特点,因此只能允许数字、字符串和元组形式展现。
-
值对象,是可以允许任意python数据类型,并且可以重复。
-
可以通过键对象实现快速获取、删除、更新对应的值对象
1.创建字典
1.1 使用花括号创建
{} 花括号是创建字典最常用的方式
Dict = {key1:value1,key2:value2,...}
复制代码
# 创建空字典
DICT = {}
# 创建一个字典
info = {"name":"JueJing","address":"JueJing.cn"}
复制代码
1.2 使用dict()创建
我们可以通过dict()函数来创建字典
#使用dict()创建空字典
DICT = dict()
# 创建info,方法一
info = dict(name="JueJing",address="JueJing.cn")
# 创建info,方法二
info2 = dict([("name","JueJing"),("address","JueJing.cn")])
print (info)
print (info2)
复制代码
1.3 使用zip()创建
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
*zip() 可以将元组解压为列表。
zip([iterable, ...])
复制代码
参数:iterabl — 一个或多个迭代器
# 两个列表
n = ["name","age"]
a = ["Tom",10]
# zip()函数生成元组
t = zip(n,a)
# dict()生成字典
Dict = dict(t)
# 打印字典
print(Dict)
复制代码
1.4 使用fromkeys创建
我们可以使用dict.fromkeys()创建为空字典
Dict = dict.fromkeys(["name","age"])
print(Dict)
复制代码
2.访问字典
2.1 元素访问
通过键对象来获取值对象,若不存在则抛出异常。
# 创建字典info
>>> info = {"name":"JueJing","address":"JueJing.cn"}
>>> info["name"]
'JueJing'
>>> info["address"]
'JueJing.cn'
>>> info["na"]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'na'
>>>
复制代码
2.2 使用get()来访问
通过python 字典内置的get()函数来获取值对象,推荐使用。
get()其优点有如下
- 指定键对象不存在,则返回None
- 可以设定指定键不存在时默认返回的对象。
>>> info = {"name":"JueJing","address":"JueJing.cn"}
>>> info.get("name")
'JueJing'
>>> info.get("address")
'JueJing.cn'
>>> info.get("na","a people") # 键对象“na”不存在,则返回指定的对象"a people"
'a people'
>>>
复制代码
2.3 使用items()函数
items()函数列出所有的键值对。
>>> info = {"name":"JueJing","address":"JueJing.cn"}
>>> info.items()
dict_items([('name', 'JueJing'), ('address', 'JueJing.cn')])
>>>
复制代码
2.4 使用可keys(),values()函数
keys()函数,列出所有的键对象列表,并返回列表的形式呈现。
value()函数,列式所有的值对象,并返回列表的形式呈现
>>> info = {"name":"JueJing","address":"JueJing.cn"}
>>> info.keys()
dict_keys(['name', 'address'])
>>> info.values()
dict_values(['JueJing', 'JueJing.cn'])
>>>
复制代码
3.基本用法
字典是属于可变数据类型,因此可以对它进行添加、修改和删除操作。
3.1 字典元素添加
给字典新增“键值对”。
- 如果”键”已经存在,则覆盖旧的键值对
- 如果“键”不存在,则新增“键值对”
>>> info = {"name":"JueJing","address":"JueJing.cn"}
>>> info["job"]= "programmer" # "job"键对象,字典中不存在,则把"job"="programmer"键值对象添加到字典中
>>> info
{'name': 'JueJing', 'address': 'JueJing.cn', 'job': 'programmer'}
>>>
复制代码
3.2. 字典元素删除
字典中元素的删除有方法如下。
1.使用del()函数,删除指定的键值对象
>>> info = {'name': 'JueJing', 'address': 'JueJing.cn', 'job': 'programmer'}
>>> del(info["name"])
>>> info
{'address': 'JueJing.cn', 'job': 'programmer'}
>>> del info["job"]
>>> info
{'address': 'JueJing.cn'}
>>> del info #删除字典
>>> info
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'info' is not defined
>>>
复制代码
2.使用clear()函数,删除所有键值对象
>>> info = {'name': 'JueJing', 'address': 'JueJing.cn', 'job': 'programmer'}
>>> info.clear()
>>> info
{}
>>>
复制代码
3.使用pop()函数,删除指定键值对象,并返回值对象
>>> info = {'name': 'JueJing', 'address': 'JueJing.cn', 'job': 'programmer'}
>>> info.pop("address")
'JueJing.cn'
>>> info
{'name': 'JueJing', 'job': 'programmer'}
>>>
复制代码
4.使用popitem()函数,随机删除和返回改键值对
字典是无序可变序列,因此没有第一个元素、最后一个元素的概念。
popitem弹出随机的项,因为字典没有“最后的元素”或者其他有关顺序的概念,
若想一个接一个地移除并处理项,这个方法非常有效。(因为不用首先获取键的列表)
>>> info = {'name': 'JueJing', 'address': 'JueJing.cn', 'job': 'programmer'}
>>> info.popitem()
('job', 'programmer')
>>> info.popitem()
('address', 'JueJing.cn')
>>> info.popitem()
('name', 'JueJing')
>>> info.popitem() # 直到把字典删除完,会抛出异常
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'popitem(): dictionary is empty'
>>> info
{}
>>>
复制代码
3.3. 字典元素修改
使用update()函数进行更新字典中的内容
- 将新字典中所有键值对象全部添加到旧字典中
- 如果key有重复的,则直接覆盖
>>> info = {"name":"JueJing","address":"JueJing.cn"}
>>> newinfo = {"name":"JueJing2","hobby":"reading"}
>>> info.update(newinfo)
>>> info
{'name': 'JueJing2', 'address': 'JueJing.cn', 'hobby': 'reading'}
>>>
复制代码
5.其他操作
- 计数键值对个数
使用len()函数来计算字典的键值对个数
>>> info = {"name":"JueJing","address":"JueJing.cn"}
>>> len(info)
2
复制代码
-
检查一个键对象,是否在字典中
key in dict
>>> info = {"name":"JueJing","address":"JueJing.cn"}
>>> "name"in info
True
>>> "na"in info #键对象不在字典中,则返回False
False
>>>
复制代码
总结
字典是我们日常工作中使用最多的数据类型之一。
以上基本操作是我们必须要掌握且熟练运用的。
好啦,以上是本期内容,欢迎大佬评论区指正。
我是正在学习python小白,盆友圈的小可爱,下次见~