python基础5

字典

  • 什么是字典

    • 能存储大量关系型数据的一个容器数据类型
    • {}包裹的
    • 以键值对的方式存储数据的
  • 基本结构

    • dic = { 'key':value, 'key1':value } 
  • 字典要求

    • 键必须是可哈希的【即不可变的数据类型】(int str 【很少 boolean tuple】)
    • 值可以是任意类型
    • 用逗号分割键值对
  • 字典和列表的区别

    • 相同点:都是能储存大量数据的容器数据类型,【在3.6X以上的版本字典可以说是有序的(插入序)】
    • 不同点:
      • 列表通过索引取值,速度相对字典较慢
      • 字典通过key取值,速度较快
      • 列表的数据毫无关联性,字典是关系型数控类型
  • 字典的优缺:

    • 优:查询速度快,数据关系明确
    • 缺:占用空间,明显的以空间换时间
  • 字典的常见的创建方法

    • 方法一

      • dic = dict((('key',value),('key1',value))) 
    • 方法二

      • dic = dict(key=value,key1 = value) 
    • 方法三

      • dic = dict({'key':value}) 
    • 方法四

      • dic = dict(zip(iterable,iterable)) 
    • 方法五

      • dic = { k,v for k in itearable for v in itearable} 
    • 方法六

      • dic = fromkeys(itearable,value) 
  • 字典的增删改查

      • 方法一【存在改的操作,如果存在key就改值,没有就创建】

        • dic['key'] = value 
      • 方法二【如果存在key就不增加,不存在就增加(有则不加,无则加值)】

        • dic.setdefault(key,value) 
    • 删【重点就是pop方法】

      • 方法一【pop是有返回值的,返回的就是value,default_value如果存在,当pop找不到key时,不会报错,只会返回default_value,不存在,找不到就会报错】

        • dic.pop(key,default_value) 
      • 方法二【清空字典】

        • dic.clear()  
      • 方法三【按照key删除,找不到key就报错】

        • del dic[key] 
    • 改【主要是update】

      • 方法一

        • dic[key] = new_value 
      • 方法二【update更新数据的意思,有则改之,无则加对】

        • dic.update(key = value,key = value) dic.update(dic) dic.update([(key,value),(key1,value1)]) 
    • 查【常用get方法】

      • 方法一

        • dic[key] 
      • 方法二【返回值是key对应的值,如果没有设置default_value找不到值会报错,设置了,找不到就会返回预设值】

        • dic.get('key',default_value) 
  • 字典的其他常用方法

    • 方法一

      • dic.keys() # 返回值是一个类似于列表的数据类型,j仅仅是类似,没有列表的任何属性,可以转换为列表 l = list(dic.keys()) # 一般与for循环联用 for key in dic.keys(): 	print(key) # 其实直接使用for循环,遍历字典,返回值也是key for key in dic: 	print(key) #也是字典的全部key 
    • 方法二

      • dic.values() #同上,返回值是字典的全部values,也可转成list  # 一般也是与for循环联用 for value in dic.values(): 	print(value)  
    • 方法三

      • dic.items() # 返回值是一个类似列表内包裹多个元组,每一个元组内存放的是key和value的二元组  # 一般与for联用 for key,value in dic.items(): #这里存在拆包赋值的操作 	print(key,value)  
  • 字典的嵌套

    • 在字典内嵌套字典、列表、set

      • dic = { 'key':{ 	'name':'p', 	'age':24, 	hobby_list:[;;;;] } } 
    • 字典的嵌套与列表的嵌套十分相似,得一层层得找到要找到要找的数据