字典
一、字典初识
- 列表可以储存大量的数据,但数据间关联性不强,查询速度慢。
- 数据类型分类:
- 可变的数据类型:list dict set
- 不可变的数据类型:str bool int tuple
- 字典:用{}括起来,以键值对形式储存的容器型数据类型
dic={'太白':
{'name':'太白金星','age':18,'sex':'男'},
'歌曲':
['奔跑','一万次悲伤','庐州月']
}
- 键(如上图中的‘name’和‘歌曲’既是键,后面的为值)必须是int,str类型
- 值可以是任意数据类型,对象
二、字典的创建
#方式一
dic=dict((('one':1),('two':2),('three':3)))
print(dic)
# {'one': 1, 'two': 2, 'three': 3}
#方式二
dic=dict(one=1,two=2.three=3)
print(dic)
#方式三
dic=dict({'one':1,'two':2,'three':3})
print(dic)
dic={[1,2,3]:'alex',1:666}
print(dic)
#报错:键要不可变的数据类型
dic = {1: 'alex', 1: '太白', 2: 'wusir'}
print(dic)
# 报错:键要唯一
#合法字典
dic={123:345,True:999,'id':1,'name':'alex','age':18,'stu':['帅哥','美女'],(1,2,4):'吱吱吱'}
print(dic[123])
print(dic[True])
print(dic['id'])
print(dic['stu'])
print(dic[(1,2,3)])
#345
#999
#1
#['帅哥', '美女']
#吱吱吱
三、字典的增删改查
#方式一
#有则改之,无则加之
dic={'name':'太白','age':18}
dic['weight']=120
print(dic)
dic['name']='alex'
print(dic)
#{'name': '太白', 'age': 18, 'weight': 75}
#{'name': 'alex', 'age': 18, 'weight': 75}
#方式二:setdefault:有则改之,无则加之
dic={'name':'天白','age':18}
dic.setdefault('height',180)
print(dic)
dic.setdefault('name','alex')
print(dic)
#{'name': '太白', 'age': 18, 'height': 180}
#{'name': '太白', 'age': 18, 'height': 180}
#设有返回值
dic={'name':'天白','age':18}
ret=dic.setdefault('height')
print(ret)#没有就返回None
ret1=dic.setdefault('name')
print(ret1)#有就返回此键值
#None
#太白
- 删:pop,通过key删除键值对,有返回值,可以设置返回值
dic={'name':'天白','age':18}
ret=dic.pop('name')
print(ret,dic)
ret1=dic.pop('n',None)
print(ret1)
#太白 {'age': 18}
#None
#随机删除
dic={'name':'天白','age':18}
ret=dic.popitem()
print(ret,dic)
#('age', 18) {'name': '太白'}
#clear清空
dic={'name':'天白','age':18}
dic.clear()
print(dic)
#{}
#del 通过键值对删除
dic={'name':'太白','age':18}
del dic['name']
print(dic)
#{'age': 18}
#通过键值对直接改
dic={'name':'太白','age':18}
dic=['name']='alex'
print(dic)
#{'name': 'alex', 'age': 18}
#update
#一 、有则改之,无则添加
dic={'name':'太白','age':18}
dic.update(sex='男',height=175,age=18)
print(dic)
#{'name': '太白', 'age': 20, 'sex': '男', 'height': 175}
#二
dic={'name':'太白','age':18}
dic.update([(1,'a'),(2,'b'),(3,'c')])
print(dic)
#{'name': '太白', 'age': 18, 1: 'a', 2: 'b', 3: 'c', 4: 'd'}
dic1={'name':'john','age':'18','sex':'male'}
dic2={'name':'alex','weight':75}
dic1.update((dic2))
print(dic1)
print(dic2)
#{'name': 'alex', 'age': '18', 'sex': 'male', 'weight': 75}
#{'name': 'alex', 'weight': 75}
#直接通过键值对查
dic={'name':'太白','age':18}
print(dic['name'])
#太白
#get
dic={'name':'太白','age':18}
v=dic.get('name')
print(v)
v1=dic.get('name1')#没有就返回None
print(v1)
v2=dic.get('name','没有此键')#有就返回键值,没有就返回’没有此键‘
print(v2)
#太白
#None
#太白
dic={'name':'太白','age':18}
# kyes()
print(dic.keys())
#values()
print(dic.values())
#items()
print(dic.items())
#dict_keys(['name', 'age'])
#dict_values(['太白', 18])
#dict_items([('name', '太白'), ('age', 18)])
四、拆包
a,b=1,2
print(a,b)
# 1 2
#元组拆包
a,b=('你好','世界')
print(a,b)
# 你好 世界
a,b=['你好','大飞哥']
print(a,b)
# 你好 大飞哥
a,b={'汪峰':'北京北京','王菲':'天后'}
print(a,b)
# 汪峰 王菲
五、字典的嵌套
dic={
'name':'汪峰',
'age':48,
'wife':[{'name':'国际章','age':38}],
'children':{'gril_frist':'小苹果','girl_three':'小怡','girl_two':'钉钉'}
}
# 1. 获取汪峰的名字。
n1=dic.get('name')
print(n1)
#汪峰
# 2.获取这个字典:{'name':'国际章','age':38}。
li=dic.get('wife')
print(li[0])
# 或改为print(dic.get('wife')[0])
#{'name': '国际章', 'age': 38}
# 3. 获取汪峰妻子的名字。
print(dic.get('wife')[0]['name'])
#国际章
# 4. 获取汪峰的第三个孩子名字。
print(dic.get('children')['girl_three'])
#小怡