数据类型字典
主要内容:
1,字典的简单介绍
2,字典增删改查和其他操作
3,字典的嵌套
一,字典的简单介绍
字典(dict)是python中唯一的一个映射类型,他是以{ }括起来的键值对组成的,在dict中key是唯一的,在保存的时候,根据key来计算出一个内存地址,然后将key-value保存在这个地址中,这种算法被称为hash算法,所以,切记,在dict中存储的key-value中的key必须是可hash的.
已知的可哈希(不可变)的数据类型:int,str,tuple,bool
不可hash的数据类型是:list,dict,set
语法:
{"key1": "value", "key2": "value2"......}
注意:key必须是不可变的,value没有要求,可以保存任意类型的数据
# 合法
dic = {123: 456, True: 99, "id": 1, "name": "chenrun", "age": 18, "stu": ["帅哥", "美女"], (1,2,3): "alex"}
print(dic[123])
print(dic[True])
print('id')
print(dic['stu'])
print(dic[(1,2,3)])
# 不合法
# dic = {[1,2,3]: "周杰伦"} # list是可变的,不能作为key
# dic = {{1: 2}: "哈哈"} # dict是可变的,不能作为key
dict保存的数据不是按照我们添加进去的顺序保存的,是按照hash表的顺序保存的,而hash表不是连续的,所以不能进行切片工作,它只能通过key来获取dict中的数据
二,字典的增删改查和其他操作
1,增加
dic = {}
dic['name'] = "周杰伦" # 如果dict中没有出现这个key,就会新增加一个key-value的组合进dict
dic["age"] = 19
print(dic) # {'name': '周杰伦', 'age': 19}
# 如果dict中没有出现过这个key-value,可以中国setdefault设置默认值
dic.setdefault("name1") # 可以往里面设置值
dic.setdefault("name1", "chenrun") # 默认值只能设定一次,因此"chenrun"不会改变原来的默认值None
print(dic) # {'name': '周杰伦', 'age': 19, 'name1': None}
2, 删除
dic = {"name": "chenrun", "age": 13, "sex": "男", "marry_status": "No"}
ret = dic.pop("name")
print(ret) # chenrun
print(dic) # {'age': 13, 'sex': '男'}
del dic["age"]
print(dic) # {'sex': '男', 'marry_status': 'No'}
# 随机删除
ret = dic.popitem()
print(ret)
# 清空字典中的所有内容
dic.clear()
3,修改
dic = {"name": "chenrun", "age": 13, "sex": "男", "marry_status": "No"}
dic["name"] = "alex"
print(dic)
dic2 = {"name": "chenrun", "age": 33, "job": "teacher"}
dic.update(dic2)
print(dic) # {'name': 'chenrun', 'age': 33, 'sex': '男', 'marry_status': 'No', 'job': 'teacher'}
4, 查询
查询一般用"key"来查找具体的数据
dic = {"name": "chenrun", "age": 13, "sex": "男", "marry_status": "No"}
print(dic["name"])
print(dic.get("age"))
print(dic.get("alex")) # 返回None
print(dic.get("alex", "查无此人")) # 可以设定默认的返回值
5,其他相关操作
dic = {"name": "chenrun", "age": 13, "sex": "男", "marry_status": "No"}
print(dic.keys()) # dict_keys(['name', 'age', 'sex', 'marry_status'])
for key in dic.keys():
print(key)
print(dic.values()) # dict_values(['chenrun', 13, '男', 'No'])
for value in dic.values():
print(value)
print(dic.items()) # dict_items([('name', 'chenrun'), ('age', 13), ('sex', '男'), ('marry_status', 'No')])
for key,value in dic.items():
print(key, value)
# 解构
a, b = 1, 2
print(a, b) # 解构的时候要注意数量必须要匹配
三,字典的嵌套
练习:
dic1 = {'name': ['alex', 2, 3, 5], 'job': 'teacher', 'oldboy': {'alex': ['python1', 'python2', 100]}}
# 1,将name对应的列表追加一个元素’wusir’。
dic1.get("name").append("wusir")
print(dic1)
# 2,将name对应的列表中的alex首字母大写。
dic1.get("name")[0] = dic1.get("name")[0].capitalize()
print(dic1)
# 3,oldboy对应的字典加一个键值对’老男孩’,’linux’。
dic1['老男孩'] = 'linux'
print(dic1)
# 4,将oldboy对应的字典中的alex对应的列表中的python2删除
dic1.get("oldboy").get("alex").remove("python2")
print(dic1)

浙公网安备 33010602011771号