5.python(第五天日记)
1.dict : 字典:key-value 储存大量的数据,而是关系型数据,查询速度快/数据类型分类:
可变数据类型(不可哈希):list,dict,set。 #哈希:哈希表
不可变数据类型(可哈希):int,bool,str,tuple.
字典的键:不可变数据类型。
字典的值:任意数据类型。
容器类型:
容器类(承载各种数据类型):list,tuple,dict。.
字典的键是唯一的键值对
字典的顺序:
3.5之前,字典是无序的。
3.6开始,字典创建的时候,按照一定的顺序插入的数值,看起来是有序的。
2.基本操作:
info = {'name': 'egon', 'age': 18, 'sex': 'male'}
1.增:
1> 有则覆盖,无则添加: # 即可以改也可以增加
info['hobby'] = 'girl'
print(info)
>>>{'sex': 'male', 'hobby': 'girl', 'age': 18, 'name': 'egon'}
info['name'] = 'sb'
print(info)
>>>{'age': 18, 'sex': 'male', 'name': 'sb'}
2> setdeafult 无则添加,有则不变
info.setdefault('hobby') #默认是None
print(info)
>>>{'sex': 'male', 'hobby': None, 'age': 18, 'name': 'egon'}
info.setdefault('hobby', 'girl')
print(info)
>>>{'age': 18, 'hobby': 'girl', 'name': 'egon', 'sex': 'male'}
info.setdefault('name', 'sb') #原来有的key,那么对应的value不变
print(info)
>>>{'age': 18, 'name': 'egon', 'sex': 'male'}
2.删:
1> pop 有返回值
print(info.pop('name'))
print(info)
>>>egon
>>>{'age': 18, 'sex': 'male'}
print(info.pop('hobby'))
>>>报错 #无此元素会报错
print(info.pop('hobby', 123))
print(info)
>>>123 #删除项如果没有,默认返回值是None,其他返回你自己设定的值
>>>{'age': 18, 'name': 'egon', 'sex': 'male'}
2> clear 清空
info.clear()
print(info)
>>>{}
3> del
del info
print(info)
>>>报错 #删除整个字典会报错
del info['name'] #del也可以删除键值对
print(info)
>>>{'age': 18, 'sex': 'male'}
del info['hobby']
print(info)
>>>报错 #没有会报错
4> popitem 随机删除
info.popitem()
print(info)
>>>{'name': 'egon', 'age': 18}
3.改:
1> 有则覆盖,无则添加: #即可以改也可以增加
info['name'] = 'sb'
print(info)
>>>{'age': 18, 'sex': 'male', 'name': 'sb'}
2> 两个字典的改:
info1 = {'name': 'sb', 'hobby': 'girl'}
info.update(info1) #将键值对info1覆盖并添加到info
print(info)
>>>{'age': 18, 'sex': 'male', 'hobby': 'girl', 'name': 'sb'}
4.查:
1> 根据key查value
print(info['name'])
>>>egon
print(info['name1'])
>>>报错 #没有会报错
2> get 根据key查value
print(info.get('name'))
>>>egon
print(info.get('name1'))
>>>报错 #没有会报错
3> keys 查key
for i in info.keys():
print(i)
>>>sex
name
age
4> values 查value
for i in info.values():
print(i)
>>>male
egon
18
5> items 查item
for i in info.items():
print(i)
>>>('name', 'egon')
('sex', 'male')
('age', 18)
5.特殊类型 dict 转化成 list
print(list(info.keys()))
print(list(info.values()))
print(list(info.items()))
>>>['name', 'age', 'sex']
['egon', 18, 'male']
[('name', 'egon'), ('age', 18), ('sex', 'male')]
6.把元素分别以原有类型提取出字典
for k, v in info.items():
print(k, v)
>>>sex male
name egon
age 18
3.概念:分别赋值
a, b = 2, 3
a, b = (2, 3)
a, b = [2, 3]
print(a,b)
>>>2 3
a, b = 2, 3
a, b = b, a
print(a,b)
>>>3 2
4.字典的本质形式
s = dict(name = 1, age = 2) # 字典的3中本质形式
print(s)
s = dict([[1, 2], (3, 4)])
print(s)
print({}.fromkeys((1, 2, 3), 'b'))
5.字典的嵌套
dic = {"name_list":['张三','lisi','隔壁王叔叔'],
'dic2':{'name':'太白','age':12},}
1 ,给列表追加一个元素:'旺旺'
l1 = dic['name_list']
l1.append('旺旺')
dic['name_list'].append('旺旺')
print(dic)
,2,给列表lisi全部大写
print(dic['name_list'][1].upper())
dic['name_list'][1] = dic['name_list'][1].upper()
print(dic)
3,给dic2 对应的字典添加一个键值对:hobby:girl.
dic['dic2']['hobby'] = 'girl'
print(dic)