# 字典
'''
字典属于无序序列,元素存放无序,是通过哈希方式进行数据存取的,字典是一个
可变容器,字典中保存一个个的键值对:key:value。我们通过key来获取对应的值
类似汉语字典
* 字典中键必须是唯一的,而且必须为不可变类型
* 字典的查找效率是比较快的
'''
# 1.字典的创建
'''
d1 = {}
d1 = dict()
d2 = {'name':'张三','age':'18'}
d3 = dict(d1 = 1,d2 = 3)
d4 = dict([('a',1),('b',2)])
'''
# 2.字典的操作
'''
存储多个学生的成绩
dict1 = {'black':99,'red':22,'yellow':88}
print(dict1)
1.元素访问
获取 语法:字典名[key]
print(dict1['black'])
print(dict1['blue']) ==>如果字典中没有这个键就是报错
字典名.get()
print(dict1.get('black','False')) ==>如果没有该键不会报错,返回为False
2.添加元素:当字典中没有该键,则表示添加,否则表示修改
dict1['white'] = 70
3.pop删除元素:通过键删除整个键值对,并返回对应的值
dict1.pop('black')
print(dict1)
del dict1['red'] #删除键值对,不返回值
dict1.clear() #清空整个字典
del dict1 #删除整个字典
4.字典的合并
a = {1:'hello'}
b = {2:'world'}
a.update(b)
print(a)
5.字典的遍历
dict2 = {'black':99,'red':22,'yellow':88}
for key in dict2:
print(key) ==> 获取的只是键
print(dict2.values()) ==> 只获取值
for value in dict2.values():
print(value) ==> 只获取值
print(dict2.items()) ==> 得到的结果为一个列表,列表中的元素是元组 输出结果为:[('black',99),('red',22),('yellow',88)]
for key,value in dict2.items():
print(key,value) == 得到键值对
for index,key in enumerate(dict2):
value = dict2['key']
print(index,key,value) ==>index为dict2中每个元素的下标
6.获取键值对的个数
print(len(dict2))
7.成员操作
d2 = {'name':'张三','sex':'男'}
print('name') ==> 判断该字典中是否存在该键
'''
# 3.zip函数
'''
zip函数可以将可迭代对象作为参数,将对象中对应的元素打包成一个元组
然后返回由这些元组组成的列表.
如果各个迭代器的元素个数不同,则返回的列表长度和最短的迭代器的长度相同
a = [8,29, 37, 49]
b = [2, 3, 4]
print(list(zip(a,b)))
可以使用遍历
for key,value in zip(a,b):
print(key,value)
'''
# 4.字典推导式
'''
语法:{exp for key in iterable}
d1 = {key:value for key,value in dict1.items()}
print(d1)
d1 = {key:value for key,value in zip(['a','b'],['c','d'])}
print(d1)
s = "sjksdaaafadsfa"
d2 = {ch:s.count(ch) for ch in s}
print(d2)
'''