Python全栈-第五课 学习笔记

python第五课 学习笔记

字典的初识

  • 列表的不足

    • 列表可以存储大量的数据,数据之间的关联性不强
      • ['one',19,'男','tow',18,'男']
    • 列表的查询速度比较慢
  • 容器型数据类型:dict

  • 数据类型的分类(可变与不可变):

    • 可变(不可哈希)的数据类型:list、dict、set
    • 不可变(可哈希)的数据类型:str、bool、int、tuple
  • 字典:{}括起来,以键值对形式存储的容器型数据类型。

    • dic = {'q':1,'w':2,"e":3,'r':4}
      
  • 键必须是不可变的数据类型:int、str (bool,tuple几乎不用)

  • 值可以是任意数据类型,对象。

  • 字典3.5x版本以前(包括3.5)是无序的。

  • 字典3.6x会按照初次建立字典的顺序排列,学术上不认为是有序的。

  • 字典3.7x以后都是有序的。

  • 字典的查询速度非常快。

  • 字典的缺点:以空间换时间。

字典的创建方式

  • # 方式一
    dic = dict((('q',1),('w',2),('e',3)))
    # 方式二
    dic = dict(one=1,two=2,three=3)
    # 方式三
    dic = dict({'one':1,'two':2,'three':3})
    
    #验证字典的合法性
    dic = {key:value}
    

字典的增删改查

  • 字典的增删改查(键值对,键要唯一)

  • 增 两种方式互补

  • dic = {'name':'jarvis','age':18}
    #方式一(直接增加,有这个键就覆盖)
    dic['sex'] = '男'
    #方式二(有这个键不变,没有就增加)
    dic.setdefault('hobby','球类运动')
    
  • dic = {'name':'jarvis','age':18}
    #方式一(按照键删除键值对,有返回值)
    dic.pop('age')     #返回的是值
    ret = dic.pop('hobby','没有此键')  #填入第二个参数时,有无第一个键值都不报错,返回第二个键值
    print(ret)
    #方式二(清空)
    dic.clear()
    print(dic)
    #方式三(按照键删除键值对,没有此键会报错)
    del dic['age']
    print(dic)
    
  • dic = {'name':'jarvis','age':18}
    dic['name'] = 'one'
    print(dic)
    
  • dic = {'name':'jarvis','age':18}
    #方式一(没有此键会报错,不推荐使用)
    print(dic['name'])
    #方式二(没有此键不会报错,可以设置返回值)
    ll = dic.get('name','没有此键')
    print(ll)
    #方式三(keys()values()items())
    #可以转化成列表
    print(list(dic.keys()))
    #遍历
    for key in dic.keys():
        print(key)
    #拆包
    for key,value in dic.items():
        print(key,value)
    

字典的嵌套

  • 练习题

  • dic = {
        'name':'jarvis',
        'age':44,
        'wife':[{'name':'jarviswife','age':38}],
        'children':{'girl_first':'one','girl_second':'two','girl_three':'three'}
    }
    
    #1.获取jarvis的名字。
    print(dic['name'])
    print(dic.get('name'))
    #2.获取这个字典:{'name':'jarviswife','age':38}。
    print(dic['wife'])
    print(dic['wife'][0])
    #3.获取jarvis妻子的名字。
    print(dic['wife'][0]['name'])
    #4.获取jarvis的第三个孩子名字。
    print(dic['children']['girl_three'])
    
posted @ 2020-04-13 16:24  Raoguozhong  阅读(114)  评论(0编辑  收藏  举报