1. 字典的引用
在一个班级有100名同学,我们需要存储这100名同学的学号,姓名,性别,年龄,如若我们用列表进行存储,那我们就需要创建四个列表将这100名同学按顺序进行插入。
这样做会让我们的代码显得十分冗余,而且不好操作,因为我们查找一个学生的信息需要到这个四个表中进行查找,因此我们引入了字典这一数据类型。
字典的优秀之处在于它是Python中唯一实现映射关系的内置类型。什么是映射呢?例如我们查找学生信息可以通过学号进行查找其对应学号下的姓名,年龄等。
2. 创建字典
· 符号为大括号
· 数据为键值对的形式出现
· 各个键值对之间用逗号分隔
# 有数据的字典
dict1 = {'name' : '小红', 'age': 20, 'sex':'女'}
# 空字典
dict2 = {}
dict3 = dict()
注意:一般称冒号前面的为键(key);冒号后面的为值(value),我们称键和值为键值对。比如name和小红就是一对键值对。
3. 字典常见操作
3.1 增加数据
通过键直接进行增加:
语法:
变量名[key] = value # key是该字典的键,value是该键对应的值
dic1 = {}
dic1["name"] = '张三'
print(dic1)
注意:由于映射严格满足映射关系,因此字典中的键必须是唯一的。
dic1 = {}
dic1["name"] = '张三'
print(dic1)
dic1["name"] = "李四"
print(dic1)
· fromkeys():
fromkeys是字典提供的方法,它可以使用 iterable 作为参数指定的可迭代对象来创建的一个新的字典,并且把所有的值初始化为values参数指定的值(默认为None)
语法:
变量名 = dict.fromkeys(iterable[,values])
dic1 = dict.fromkeys("Python",520)
3.2 删除数据
· del:
删除字典或者字典中指定的键值对
语法:
del 字典名 # 表示删除整个字典
del 字典名[key] # 删除字典键位key的键值对
dict1 = {'name': '张三', 'age': 18, 'gender': '男'}
del dict1['age'] # 删除字典键为name的键值对
print(dict1)
del dict1 # 删除字典dict1
print(dict1) # 再次访问发生报错
· pop():
语法:
字典名.pop(key[,default])
删除一个指定键的键值对,存在该键,则返回该键的值。
如果删除一个不存在的键就会抛出异常,但如果你想要Python不进行异常抛出,可以指定一个default参数,这是它会给你返回一个default指定的对象。
del 和pop()的区别:del是将直接将其删掉,不会具有返回值,pop()会返回你删除键的值
dict1 = {'name': '张三', 'age': 18, 'gender': '男'}
print(dict1.pop('name', '没有这个元素'))
print(dict1)
如果存在该键,则返回对应的值,如若不存在,则返回指定参数 defalut "没有这个元素"
dict1 = {'name': '张三', 'age': 18, 'gender': '男'}
print(dict1.pop('sex', '没有这个元素'))
print(dict1)
· clear():
语法:
字典名.clear()
清空字典所有的键值对
dict1 = {'name': '张三', 'age': 18, 'gender': '男'}
dict1.clear()
print(dict1)
3.3 修改数据
· 通过键直接修改
语法:
字典名[key] = values
注意:若不存在该键,则字典将增加一个该键下的键值对
dict1 = {'name': '张三', 'age': 18, 'gender': '男'}
dict1['name'] = '李四'
print(dict1)
dict1['love'] = 'python'
print(dict1)
· update():
语法:
变量名.update([other])
update()可以用来传递多个键值对,若我们需要修改多个键值对的,使用update()是非常不错的。当然,当传递的键不存在字典时,也会自动在字典中创建一个键值对。
dict1 = {'name': '张三', 'age': 18, 'gender': '男'}
dict1.update({'name': '李四', 'age': 20})
print(dict1)
3.4 查询数据
· 使用键进行查找
dict1 = {'name': '张三', 'age': 18, 'gender': '男'}
print(dict1['name'])
· get():
语法:
字典名.get(key[,default])
当我们直接使用键查找数据时,如果键不存在,它就会给我们报错,那么该如何让解释器不给我们报错呢?我们就可以使用get(),它可以存入一个 default 参数指定为当找不到键的时候返回的值。
dict1 = {'name': '张三', 'age': 18, 'gender': '男'}
print(dict1.get('name'))
print(dict1.get('wife',"没有找到他的妻子"))
· setdefault():
语法:
字典名.setdefault(key[,default])
我们要查找字典中有没有这个键,如果有的话返回它对应的值,若没有的话,就给它指定一个新的值,相当于我们给字典创建了一个新的键值对,这种需求我们可以使用一个 setdefault 的方法来实现:
dict1 = {'name': '张三', 'age': 18, 'gender': '男'}
print(dict1.sedefault('name','李四'))
print(dict1.sedefault('wife','小红'))
print(dict1)
4. 字典的视图:
4.1 什么是试图对象?
视图对象即字典的动态试图,这就意味着当字典的内容发生改变的时候,试图对象的内容也
相应地跟着改变。
· items():
语法:
字典名.items()
用于获取字典的键值对
dict1 = {'name': '张三', 'age': 18, 'gender': '男'}
print(dict1.items())
· keys():
语法:
字典名.keys()
用于获取字典的所有键
dict1 = {'name': '张三', 'age': 18, 'gender': '男'}
print(dict1.keys())
· values():
语法:
字典名.values()
用于获取字典的所有值
dict1 = {'name': '张三', 'age': 18, 'gender': '男'}
print(dict1.values())
当然,字典的视图不会是一直不变的,它会随着你对字典的操作而发生变化 。
以上是我对字典的基础认识,如果大家发现文中出现的问题,希望大家能够指出,我们共同学习探讨!!!