强烈推荐!!Python系列专栏更多内容汇总可以点击下面跳转链接查看
Python基础语法+算法模板+例题分享专栏导航
文章目录
1. 什么是字典
- 字典是另一种可变容器模型,且可存储任意类型对象。
- 字典的每个键值对( key=>value )用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,格式如下所示:
dict = {key1 : value1, key2 : value2, key3 : value3 }
简言之,字典就是一个能够存放多个映射关系( key映射value )的数据结构,可以用下面这张图清晰的表示出来
注意:字典里的key必须是唯一的,因为要实现一对一的映射关系
2. 如何创建字典
- 可以使用大括号{}创建字典,实例如下
# 使用大括号 {} 来创建空字典
emptyDict = {}
# 创建有内容的字典
dict = {"sjh": 985, "zym": 985, 123: 123}
# 打印字典
print(emptyDict)
print(dict)
输出结果:
{}
{‘sjh’: 985, ‘zym’: 985, 123: 123}
3. 访问字典里的值
3.1 根据key查询value
- 字典可以通过字典名[key]去访问value,实例如下:
d = {"sjh": 985, "zym": "cute", 123: 456}
print(d["sjh"])
print(d["zym"])
print(d[123])
输出结果:
985
cute
456
3.2 dict.get(key, default=None)查询value —>推荐使用这个
- dict.get(key, default=None) 函数返回指定键的值,如果key没有的话,则会返回default(默认是None,如果你设置了该参数则返回你设置的default)
下面给一个例子
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print(dict.get('Name'))
print(dict.get('abc')) #没有key='abc',返回None
print(dict.get('123', -1)) #没有key='123',返回设置的default=-1
输出结果:
Runoob
None
-1
那么看到这里,大家可能有疑问,这两种方法有啥区别?谁更好?
- get(key) 方法在 key(键)不在字典中时,可以返回默认值 None 或者设置的默认值。
- dict[key] 在 key(键)不在字典中时,会触发 KeyError 异常。
显而易见的,使用get(key)方法更保险!!!
4. 修改字典
- 根据3.1里讲的方法,通过字典名[key]得到value,直接修改即可,实例如下:
d = {"sjh": 985, "zym": "cute", 123: 456}
d["sjh"] = 666
print(d["sjh"])
输出结果:
666
注意:字典无法修改key,只能修改value
5. 删除字典元素
5.1 del删除键值对(不返回value)
- del 字典名[key]可以删除字典里key-value这个键值对,实例如下:
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
del dict['Name'] # 删除键 'Name'
print(dict)
输出结果:
{‘Age’: 7, ‘Class’: ‘First’}
5.2 dict.pop(key, default)删除键值对(返回value)
- dict.pop(key, default) 删除字典 key(键)及其所对应的值,返回被删除的值。如果键不存在,则可以选择返回一个默认值default(如果参数里提供了)
参数的含义如下:
- key:要移除的键。
- default(可选):如果键不存在时,返回的默认值。如果没有提供默认值且键不存在,会引发 KeyError 异常。
下面给一个例子:
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
ans = dict.pop('Name')
age = dict.pop('age11', -1) #没有age11这个key的话返回-1
print("ans = ", ans)
print("age = ", age)
print("dict = ", dict)
输出结果:
ans = Runoob
age = -1
dict = {‘Age’: 7, ‘Class’: ‘First’}
ps:当即需要删除键值对,还需要返回key对应的value的时候可以用这个,但是感觉好像没啥使用空间emmm反正我没遇到过,因为字典一般不需要删除键值对,只作为容器存储数据
6. dict的内置函数
有一些字典里的内置函数还是蛮好用的,下面给出一些常用的
6.1 key in dict 查询key是否在dict里
- key in dict 用于判断键是否存在于字典中,如果键在字典 dict 里返回 true,否则返回 false
- key not in dict 则判断见是否不存在字典中
下面给一个例子:
thisdict = {'Name': 'Runoob', 'Age': 7}
# 检测键 Age 是否存在
if 'Age' in thisdict:
print("键 Age 存在")
else:
print("键 Age 不存在")
# 检测键 Sex 是否存在
if 'Sex' in thisdict:
print("键 Sex 存在")
else:
print("键 Sex 不存在")
# not in
# 检测键 Age 是否不存在
if 'Age' not in thisdict:
print("键 Age 不存在")
else:
print("键 Age 存在")
输出结果:
键 Age 存在
键 Sex 不存在
键 Age 存在
ps:in操作在列表等数据结构里都有类似的操作,感兴趣可以Google之
6.2 dict.keys() 返回dict里的所有key
- dict.keys() 方法返回一个key的视图对象
ps: 视图对象不是列表,不支持索引,可以使用 list() 来转换为列表。因为在使用中如果直接使用dict.keys(),那么返回值为dict_keys,并非直接的列表,若要返回列表值还需调用list函数。
下面给一个例子:
dict = {"sjh": 985, "zym": 985, "zhangsan": 211, 985: 666}
print(type(dict.keys()))
l = list(dict.keys())
print(l)
输出结果:
<class ‘dict_keys’>
[‘sjh’, ‘zym’, ‘zhangsan’, 985]
6.3 dict.values() 返回dict里的所有value
- dict.values() 方法返回一个视图对象,与dict.keys()是一样的,实例如下:
dict = {"sjh": 985, "zym": 985, "zhangsan": 211, 985: 666}
print(type(dict.values()))
l = list(dict.values())
print(l)
输出结果:
<class ‘dict_values’>
[985, 985, 211, 666]
##6.4 dict.items() 返回所有键值对
- dict.items() 方法返回字典的所有键值对的视图,与上面的依旧一样,实例如下:
dict = {"sjh": 985, "zym": 985, "zhangsan": 211, 985: 666}
print(dict.items())
l = list(dict.items())
print(l)
输出结果:
dict_items([(‘sjh’, 985), (‘zym’, 985), (‘zhangsan’, 211), (985, 666)])
[(‘sjh’, 985), (‘zym’, 985), (‘zhangsan’, 211), (985, 666)]
6.4 dict.clear() 清空字典
- dict.clear()用于删除字典内所有键值对,实例如下:
tinydict = {'Name': 'Zara', 'Age': 7}
print ("字典长度 : %d" % len(tinydict))
tinydict.clear()
print ("字典删除后长度 : %d" % len(tinydict))
结果如下:
字典长度 : 2
字典删除后长度 : 0
总结
本文详细讲解了字典的特性、操作字典的各种方法以及python自带的一些字典的内置函数,真正要掌握还是需要大量的练习,写代码是必不可少的!!!