Python 字典
1 什么是字典
字典是Python中唯一的映射类型,采用键值对(key-value)的形式存储数据
Python中对key进行哈希函数运算,根据结果来决定value的存储地址,所以字典是无序的,且key必须是可哈希的可哈希的意思是,key必须是不可变类型:如数字、字符串、元组
字典和列表是Python中最灵活的内置数据类型,两者的区别在于:列表是有序的对象集合、可以通过索引取值;字典是无序的对象集合,只能通过键(key)来取值
特别注意:Python 3.7引入了有序字典,使用时需要先导入 from collections import OrderedDict
2 字典的操作
2.1 创建字典
创建字典方法如下:
# 创建空字典
dict1 = {}
dict2 = dict()
print(dict1)
print(dict2)
# 直接赋值
dict3 = {"张无忌": 25, "赵敏": 24}
print(dict3)
# dict函数和参数传值
dict4 = dict(张无忌=25, 赵敏=24)
# 此方法以参数形式构建键值对,所以字符不用加引号"",Python生成字典时会自动补上,同时也不能用数字作为键,因为参数不能以数字开头
print(dict4)
# dict函数和可迭代对象
dict5 = dict(zip(["张无忌", "赵敏", "周芷若"], [25, 24, 25]))
dict6 = dict([("张无忌", 25), ("赵敏", 24), ("周芷若", 25)])
print(dict5)
print(dict6)
# 字典推导式,此方法严格来说就是直接赋值
dict7 = {i: i ** 2 for i in range(10) if i % 2 == 0}
# dict.fromkeys(sep,value=None)方法创建,sep是可迭代序列,value是可选参数,所有值均相同,默认值是None
dict8 = dict.fromkeys(range(3))
print(dict8)
结果如下:
2.2 访问列表元素
2.2.1 以键(key)访问值(value)
示例如下:
a = {"张无忌": 25, "赵敏": 24}
print(a["张无忌"])
结果如下:
2.2.2 dict.item()方法遍历字典
dict.item()方法返回的是一个二元元组构成的dict_item类型对象,dict_item类型可以遍历,但不能更改
其中二元元组是由字典的键值对构成,示例如下:
a = {"张无忌": 25, "赵敏": 24}
print(a.items())
print(type(a.items()))
for item in a.items(): # item对象由元组构成
print(item)
print(type(item))
for key, value in a.items(): # 元组由键值对构成
print(key, value)
print(type(key), type(value))
结果如下:
2.2.3 dict.key()、dict.value()方法遍历字典的键、值
示例如下:
a = {"张无忌": 25, "赵敏": 24}
print(a.keys())
print(a.values())
print(type(a.keys()), type(a.values()))
for key in a.keys():
print(key)
print(type(key))
for value in a.values():
print(value)
print(type(value))
结果如下:
2.3 改
修改字典的值直接通过键进行覆盖即可,实例如下:
a = {"张无忌": 27, "赵敏": 24, "周芷若": 25}
a["张无忌"] = 30
print(a)
结果如下:
而修改字典的键则需要先用pop()方法把键值对删掉并取出值,然后再将值和新的键新增至原字典,示例如下:
a = {"张无忌": 27, "赵敏": 24, "周芷若": 25}
a["陈友谅"] = a.pop("张无忌")
print(a)
结果如下:
2.4 增
2.4.1 使用键直接写入键值对
a = {"张无忌": 27, "赵敏": 24, "周芷若": 25}
a["陈友谅"] = 30
print(a)
结果如下:
直接赋值时,键已存在则更新值,不存在则新增键值对
2.4.2 dict.update()方法
dict.update()方法的参数是关键字参数或者字典,示例如下:
# 参数为关键字参数,参数不能以数字开头,key不存在则增加,存在则更新value
a = {"张无忌": 27, "赵敏": 24, "周芷若": 25}
a.update(白眉鹰王=80, 成昆=50, 张无忌=30)
print(a)
# 参数为字典,key不存在则增加,存在则更新value
b = {"张无忌": 27, "赵敏": 24, "周芷若": 25}
c = {"白眉鹰王": 80, "成昆": 50, "张无忌": 30}
b.update(c)
print(b)
结果如下:
2.5 删
2.5.1 del()函数
del()函数通过指定键的方法删除键值对,示例如下:
a = {"张无忌": 27, "赵敏": 24, "周芷若": 25}
del a["张无忌"]
print(a)
结果如下:
2.5.2 pop()方法
pop()方法通过指定键的方法删除键值对,并返回对应的值,示例如下:
a = {"张无忌": 27, "赵敏": 24, "周芷若": 25}
b = a.pop("张无忌")
print(a)
print(b)
结果如下:
2.5.3 clear()方法
clear()方法清空字典所有元素,保留空字典,示例如下:
a = {"张无忌": 27, "赵敏": 24, "周芷若": 25}
a.clear()
print(a)
结果如下: