数据类型字典

主要内容:

  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)

 

posted @ 2018-06-05 15:08  猴里吧唧  阅读(128)  评论(0编辑  收藏  举报