Day 5 字典以及字典的用法

拓展
li = ['alex','wusir','taibai']
print('_'.join(li))
拼接的符号''.join(可迭代对象)

字典--dict
字典:用于存贮数据,存贮大量数据
优点:速度快(快于列表)
能将数据之间关联起来

定义一个字典
dict = {'1':10,'2':20,'张与':40}
字典中逗号分割开的叫做一个元素'1'(键):10(值) 键值对
字典的键:
可哈希的---不可变的数据类型--避免哈希冲突,使用了开放群值法
不可哈希---可变的数据来兴
要求唯一--如果有重复的后边的值前面的值覆盖
字典的值:
可以任意

合法
dic = {123: 456, True: 999, "id": 1, "name": 'sylar',
"age": 18, "stu": ['帅哥', '美⼥'], (1, 2, 3): '麻花藤'}
print(dic[123])
print(dic[True])
print(dic['id'])
print(dic['stu'])
print(dic[(1, 2, 3)])
不合法
dic = {[1, 2, 3]: '周杰伦'} # list是可变的. 不能作为key
dic = {{1: 2}: "哈哈哈"} # dict是可变的. 不能作为key
dic = {{1, 2, 3}: '呵呵呵'} # set是可变的, 不能作为key

注意: key必须是不可变(可哈希)的. value没有要求.可以保存任意类型的数据


dic = {'张与':[1,2,3]}
dic['李文虎'] = 89
print(dic)#直接添加,暴力添加

dic = {'张与':[1,2,3]}
dic.setdefault('李文虎','89')
print(dic)

dic = {'张与':[1,2,3],'李文虎':'89'}
dic.setdefault('李文虎','100')
print(dic)
# 李文虎这个键去字典查询,如果不存在执行添加,如果存在就不添加。

dic = {'张与':[1,2,3],'李文虎':'89'}
print(dic.setdefault('王菲'))
print(dic)
89 存在
None 不存在 执行添加

删除
dic = {'张与':[1,2,3],'李文虎':'89'}
del dic['张与']
print(dic)#通过字典的键删除键值对

dic = {'张与':[1,2,3],'李文虎':'89'}
print(dic.pop('张与'))
print(dic)#通过字典的键删除键值对,有返回值-被删除的值

dic = {'张与':[1,2,3],'李文虎':'89'}
dic.clear()
print(dic)


dic = {'张与':[1,2,3],'李文虎':'89'}
dic['张与'] ='asd'
print(dic)#字典中没有某个键值对的时候就是添加,当键在字典中存在的时候就是修改
有则改,无则加
例:
dic = {'张与':[1,2,3],'李文虎':'89'}
dic.update({'1':3,'5':4,'李文虎':100})
print(dic)

dic = {'张与':[1,2,3],'李文虎':'89'}
dic1 = {'1':3,'5':4,'李文虎':100}
dic1.update(dic)
print(dic1)#update()的字典级别高于update前面的字典


dic = {'1':3,'5':4,'李文虎':100}
for i in dic:
print(i)#获取的是每个键值对的键

dic = {'1':3,'5':4,'李文虎':100}
print(dic.get('李文虎'))

dic = {'1':3,'5':4,'李文虎':100}
print(dic.get('王菲'))
通过键获取值,如果不在字典中返回NONE

dic = {'1':3,'5':4,'李文虎':100}
print(dic['李文虎'])

dic = {'1':3,'5':4,'李文虎':100}
print(dic['王菲'])
通过键获取值,如果不在字典中报错

其它操作

dic = {'1':3,'5':4,'李文虎':100}
for i in dic:
print(i,dic.get(i))

高仿列表
dic = {'1':3,'5':4,'李文虎':100}
print(dic.keys())
高仿列表---dict_keys(['1', '5', '李文虎'])
可实现功能
for循环(可实现)
dic = {'1':3,'5':4,'李文虎':100}
for i in dic.keys():
print(i)

索引查询(不可实现)
dic = {'1':3,'5':4,'李文虎':100}
print(dic.keys[0])

迭代添加新列表(可实现)
lst = []
dic = {'1':3,'5':4,'李文虎':100}
for i in dic:
lst.append(dic[i])
print(lst)

获取字典中所有的值(可实现)
dic = {'1':3,'5':4,'李文虎':100}
print(dic.values())

获取字典中所有的键值对(可实现)
dic = {'1':3,'5':4,'李文虎':100}
print(dic.items())

for循环获取字典中所有的键值对(可实现)
dic = {'1':3,'5':4,'李文虎':100}
for i in dic.items():
print(i[0],i[1])

解构
a = 10
b = 20
a,b = b,a
print(a,b)

a,b = 1,2
print(a)
print(b)

a,b = [1,2]
print(a)
print(b)

a,b = (3,4,5)
print(a,b)#报错,没有一一对应

a,_,b = (3,4,5)
print(a,b)#等号后边的值和前面的变量名一一对应

a = 10,12 #本质是一个元组
print(a)

a,b = '23'
print(a,b)

a,b = {'1':'a','2':'b'}
print(a,b)

dic = {'1':3,'5':4,'李文虎':100}
for k,v in dic.items():
print(k,v)

字典的嵌套
dic = {1001:['a','b']
1002:{'c':{'前期1':['大烧饼’],'前妻2':['熊大','熊二'],'国际章':'rose'}},
1003:{'陈冠希':['啊娇','啊撒','张柏芝']},
1004:{'韦小宝':[{'教主夫人':{'教主'}},{'阿珂':'刺客'},{'双儿':'天地会'},{爱新觉罗建宁:公主}]}
}
print(dic[1004]['韦小宝'][0]['教主夫人'][0])

总结
字典--dict
无序,可变的
键:使用不可变数据类型(可哈希),键是唯一的
值:可以任意


dic['键']='值'
dic.setdefault('键','值')#存在不添加

删除
del dic['键']
dic.pop['键']
dic.clear()


dic['键']='值'
dic.update('要更新的字典')


for循环查询的是字典的键
get('键')#存在返回字典中键对应的值,不存在返回NONE
dic['键']#存在返回字典中键对应的值,不存在报错

其它操作
keys---获取字典中所有的键,存放在一个高仿列表中
values--获取字典中的所有值,存放在一个高仿的列表中
items--获取字典中所有键和值 存放在一个高仿的列表中(元组第一个为键,第二个为值)

解构

a = 10
b = 20
a,b = b,a

字典的嵌套
查找的时候一层一层通过键进行查找键

posted @ 2019-07-10 22:35  犇羴鱻龘毳  阅读(152)  评论(0编辑  收藏  举报