Python数据类型——字典
(一)字典的定义
字典的每个值都具备自己独有的名称即键( key ),每个 key 都有对应的值( value ),字典中的 key 和 value 必须成对出现 。如图,name对应的值就是Alan。
要注意,字典的key是唯一的,但是value可以有多个一样的,也就是不同的键可以对应相同的键值。
(二)字典的访问
1、通过键可以获取值,请看代码
运行结果如下:
要注意,通过key来访问value的时候,如果key是存在的,那么会返回对应的value值,如果不存在,那么会显示错误。
2、通过get的方法获取键值
格式: dictA.get(key)
这种方法在key不存在的时候会返回None,而不会像第一种方法那样报错。
(三)字典的遍历
获取所有键值对函数:dictA.items() 可以通过for循环遍历
for key,value in dictA.items()
print(‘%r==%r’%(key,value)
请看如下代码
运行结果如下
(四)字典常用函数
1、获取所有的键的函数: dictA.keys()
dictA={'name': 'Alan', 'age': '18', 'school': 'SCUT'}
print(dictA.keys())
获取所有的值的函数: dictA.values()
dictA={'name': 'Alan', 'age': '18', 'school': 'SCUT'}
print(dictA.values())
2、删除函数
dictA.pop(key) # 删除对应键值
dictA.clear() # 清空 dictA
del dictA[ key ] # 删除对应键值
del dictA # 删除 dictA
dictA = {'name': 'Alan', 'age': 18, 'listA': [10, 20, 30], }
dictA.pop('name') # 删除name 对应的值
print(dictA) # 输出结果 无name
del dictA ['age'] # 删除单个键值
print(dictA ) # 输出结果无age
dictA .clear() # 清空dictA的键值,不会删除引用dictA
print(dictA) # dictA还能访问
del dictA # 删除字典dictA的引用
print(dictA) # 字典dictA无法访问,出现异常
运行结果如下
3、增添或修改函数
dict[key] = value 增添或修改字典值,若是字典中不存在key,则是增添,若是字典中存在key,则是修改。
在字典中,我们使用update函数对字典值进行增添或者修改
dictA = {'name': 'Alan', 'age': 18, 'listA': [10, 20, 30], }
dictA['name'] = 'wangkkklll' #更新name中的值
print(dictA)
dictA['school'] = 'SCUT' #dictA中没有school,则增添school
print(dictA)
dictB={'address':'guangzhou','listB':[1,2,3]}
dictA.update(dictB) #根据dictB批量更新dictA
print(dictA)
运行结果如下
4、对字典进行排序
使用sorted()函数,分为两种排序(按照key排序和按照value排序)
按照key进行排序 sorted(dictA.items(),key=lambda d:d[0])
按照value进行排序 sorted(dictA.items(),value=lambda d:d[1])
dictA = {'name': 'Alan', 'age': 18, 'listA': [10, 20, 30], }
sorted(dictA.items(), key=lambda d: d[0])
print('按照key排序:{}'.format(dictA))
sorted(dictA.items(), value=lambda d: d[1])
print('按照value排序:{}'.format(dictA))
运行结果如下
我们可以看到,程序将按照key排序的运行结果显示出来了,但是按照value的结果却报错了,这是因为键值是不同类型的数据,它们不能进行排序比较。
5、计算键的总数
len(dictA)
dictA = {'name': 'Alan', 'age': 18, 'listA': [10, 20, 30], }
print(len(dictA))
(五)小结
1、字典与列表的最大区别是字典强调键值对,键值一一对应,由于字典不能进行切片操作,也就是没有下标这种概念,因此,在字典中键值对的存放顺序并不重要,重要的是key和value必须一一对应。
2、字典的key是不能改变的,因此可以用数字、字符串、元组来充当,而不能使用列表。
3、无论数据量有多大,键值访问速度均相等。