【愚公系列】2021年12月 Python教学课程 07-字典Dict
一、字典Dict
Python 的字典数据类型是基于 hash 散列算法实现的,采用键值对(key:value)的形式,
根据 key 的值计算 value 的地址,具有非常快的查取和插入速度。
字典是无序的,包含的元素个数不限,值的类型也可以是其它任何数据类型!
字典的 key 必须是不可变的对象,例如整数、字符串、bytes 和元组,但使用最多的还
是字符串。列表、字典、集合等就不可以作为 key。同时,同一个字典内的 key 必须是
唯一的,但值则不必。
字典可精确描述为不定长、可变、无序、散列的集合类型。
字典的每个键值对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})
中 ,例如:
dic = {key1 : value1, key2 : value2 }
二、字典相关操作
1.创建字典
方式一: 直接创建
>>> dic1 = {'name': 'Tom', 'age': 40}
方式二: 动态创建
>>> dic2 = {}
>>> dic2['name'] = 'Tom'
>>> dic2['age'] = 40
方式三: 关键字创建
>>> dic3 = dict(name='Tom', age=40)
方式四: 键/值对创建
>>> dic4 = dict((['name', 'Tom'], ['age', 40]))
>>> dic4
方式五: 通过 fromkeys 方法来创建
>>> dic5 = dict.fromkeys(['a', 'b'], 0)
>>> dic5
方式六: zip 创建字典
>>> dic6 = dict(zip(['a', 'b'], [1, 2]))
>>> dic6
zip()
函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然
后返回由这些元组组成的对象。我们可以使用 list() 转换来输出列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。
利用 * 号操作符,可以将元组解压为列表。
2.访问字典
字典是集合类型,不是序列类型,因此没有索引下标的概念,更没有切片的说法。字典
采用把相应的键放入方括号内获取对应值的方式取值。
dic = {'Name': 'Jack','Age': 7, 'Class': 'First'}
print ("dic['Name']: ", dic['Name'])
print ("dic['Age']: ", dic['Age'])
如果访问字典里没有的键,会抛出异常:
>>> dic = {'Name': 'Jack','Age': 7, 'Class': 'First'}
>>> dic["address"]
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
dic["address"]
KeyError: 'address'
3.增加和修改
增加就是往字典插入新的键值对,修改就是给原有的键赋予新的值。由于一个 key 只能
对应一个值,所以,多次对一个 key 赋值,后面的值会把前面的值冲掉。
>>> dic = {'Name': 'Jack','Age': 7, 'Class': 'First'}
>>> dic["address"] = "Shanghai"
>>> dic["address"] = "Beijing"
>>> dic["Age"] = 18
>>> dic
{'Name': 'Jack', 'Age': 18, 'Class': 'First', 'address': 'Beijing'}
要统计字典内键的个数,可以使用 Python 内置的 len()函数:
dic = {'Name': 'Jack','Age': 7, 'Class': 'First'}
>>> len(dic)
4.删除字典元素、清空字典和删除字典
使用 del 关键字删除字典元素或者字典本身,使用字典的 clear()方法清空字典。
>>> dic
{'Name': 'Jack', 'Age': '20', 'Class': 'First', 'sex': 'male'}
>>> del (dic['Name']) # 删除指定的键
>>> dic
{'Age': '20', 'Class': 'First', 'sex': 'male'}
>>> a = dic.pop('Class') # 弹出并返回指定的键
>>> a
'First'
>>> dic
{'Name': 'Jack', 'Age': 7}
>>> dic.clear() # 清空字典
>>> dic
{}
>>> del (dic) # 删除字典本身
>>> dic
Traceback (most recent call last):
File "<pyshell#20>", line 1, in <module>
dic
NameError: name 'dic' is not defined
5.字典的重要方法
下表中列出了字典的重要内置方法。其中的 get、items、keys 和 values 是核心中的核
心,必须熟练掌握!
方法 | 作用 |
---|---|
clear() | 删除字典内所有元素 |
copy() | 返回一个字典的浅复制 |
fromkeys() | 创建一个新字典,以序列 seq 中元素做字典的键 |
get(key) | 返回指定键的值,如果值不在字典中,则返回default 值 |
items() | 以列表返回可遍历的(键, 值) 元组对 |
keys() | 以列表返回字典所有的键 |
values() | 以列表返回字典所有的值 |
pop(key) | 删除并返回指定 key 的值 |
popitem() | 随机删除并返回字典内某个键的值 |
setdefault(key, default=None) | 和 get()类似,但如果键不存在于字典中,将会添加键并将值设为 default |
update(dict2) | 把字典 dict2 的键/值对更新到 dict 里 |
6.遍历字典
遍历字典获得的键值对是随机无序的!以下的遍历方法必须全部熟练掌握。
dic = {'Name': 'Jack', 'Age': 7, 'Class': 'First'}
# 1 直接遍历字典获取键,根据键取值
for key in dic:
print(key, dic[key])
# 2 利用 items 方法获取键值,速度很慢,少用!
for key,value in dic.items():
print(key,value)
#3 利用 keys 方法获取键
for key in dic.keys():
print(key, dic[key])
#4 利用 values 方法获取值,但无法获取对应的键。
for value in dic.values():
print(value)
- 点赞
- 收藏
- 关注作者
评论(0)