字典及相关操作
字典
字典的意义:
列表的缺点:
列表如果存储的数据较多,那么它的查询速度会相对变慢
列表储存的数据关联性不强
什么是字典:
python的基本数据类型之一:字典
python中唯一的映射类的数据,格式为用花括号 { } 括起来
字典是以键值对形式储存,每一对键值对以逗号隔开
{'name':'太白金星','age':'18','sex':'man'}
字典是以键值对形式储存的
键:不重复的,唯一的。键的数据类型必须是不可变的数据类型
值:任意储存类型,对象
字典可以储存大量键值对数据
python3.6之前,包括3.5,字典的排序都是无序的
python3.6之后,字典强行变成有序的
字典的优点
字典可以储存大量的关系型数据
字典的查询速度非常快
字典的增删改查
dic = {'name','太白金星','age','18','hobby','wife'}
增:
1.有则修改,无则添加
dic['hight'] = 176 添加一个键值对
dic['age'] = 23 把字典中的age对应的值修改为23
2.有则不变,无则添加
dic.setdefault('weight') dic = {'name','太白金星','age','18','hobby','wife','weight':None}
dic.setdefault('weight',160) dic = {'name','太白金星','age','18','hobby','wife','weight':160}
删:
pop
按照键删除
ret = dic.pop('age') 按照键删除掉键值对
ret = dic.pop('age1') 没有对应的键不会报错 有返回语 不经过设置一般是None
可以设置提示语
ret = dic.pop('age1','没有此键')
clear
清空
dic.clear()
print(dic)
popitem
python3.6版本之后命令为删除最后一个j键值对,3.6版本之前命令为随即删除一个键值对
ret = dic.popitem()
print(ret)
print(dic)
del
用法跟在列表时相似
del dic['name'] 按照键删除键值对
del dic['name2'] 没有相应键值会报错
del dic 删除整个字典
改:
dic['age'] = 30 同增的办法,无则添加,有则修改
update
dic.update(car = '逍客',money = 13000)
可以批量添加键值对到字典里
还可以将一个字典覆盖到另一个字典里
dic = {"name": "jin", "age": 18, "sex": "male"}
dic2 = {"name": "alex", "weight": 75}
dic2.update(dic)
将dic里面的键值对覆盖添加到dic2中
print(dic) {'name': 'jin', 'age': 18, 'sex': 'male'}
print(dic2) {'name': 'jin', 'weight': 75, 'age': 18, 'sex': 'male'}
查:
1.相对不好的方式
print(dic['age'])
print(dic['age1']) 如果没有此键会报错
2.get
print(dic.get('age'))
没有此键默认返回None
print(dic.get('age1'))
可以设置返回值
print(dic.get('age1', '没有此键'))
字典的for循环
dic = {'name','太白金星','age','18','hobby','wife'}
for i in dic:
print(i)
dic.keys() 打印出所有的键
dic.values() 打印出所有的值
dic.items() 打印出所有的键和值
可以用for循环打印出所偶的键 所有的值 所有的键和值
都可以转化为list
ret = dic.keys()
print(list(ret))
a = 18
b = 32
a, b = b, a
print(a,b)
print(dic.items())
for k,v in dic.items(): 利用分别赋值
print('这是键:', k)
print('这是值:', v)
字典的嵌套
dic = {
'name_list': ['博哥', '菊哥', 'b哥', 'alex'],
'barry': {
'name': '太白金星',
'age': 18,
'hobby': 'wife',
}
}
1,给这个列表['博哥', '菊哥', 'b哥', 'alex'] 追加一个元素 '老男孩'。
l1 = dic['name_list']
# print(l1)
l1.append('老男孩')
print(dic)
简写;
dic['name_list'].append('老男孩')
print(dic)
2,将这个列表['博哥', '菊哥', 'b哥', 'alex']中的alex变成首字母大写。
print(dic['name_list'][-1].capitalize())
dic['name_list'][-1] = dic['name_list'][-1].capitalize()
print(dic)
3,将这个键值对 'name': '太白金星' 的 '太白金星' 改成男神。
先通过dic 找到小字典
print(dic['barry'])
在通过小字典将name 对应的值更改
dic['barry']['name'] = '男神'
print(dic)
4,给barry对应的小字典增加一个键值对: weight: 160
dic['barry']['weight'] = 150
print(dic)
另加:
按数据类型的的划分
容器型与非容器型划分:
容器型数据类型: list tuple dict set
非容器型数据类型: int str bool
按可变与不可变划分:
可变(不可哈希)的数据类型 : list dict set
不可变(可哈希)的数据类型: int str bool tuple