仗键走天涯003

1今日内容

  • 字典的初识
  • 字典的使用(增删改查)
  • 字典的嵌套

2内容回顾

  • 列表:容器型数据类型,可以承载大量的数据,有序的数据
    • 增:
      • append 追加
      • insert 插入
      • extend 迭代着追加
      • pop 按照索引删除,有返回值,默认删除第一个
      • remove 按照元素删除
      • clear 清空
      • del 按照索引 ,切片(步长)
      • lis[0] = ‘’
      • lis[:2] = ''
      • lis[1:5:2] =''
      • 索引,切片
      • for
  • 元祖:只读列表,() 拆包
  • range:可以看做控制范围的数字列表,但是它不是列表

3具体内容

  • 字典的初识

    • why

      • 列表可以存储大量的数据,数据之间的关联性不强
      • 列表的查询速度慢
    • what

      • 容器型数据类型:dict
    • how

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

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

        dic = {'太白':
            {'name':'金星','age':18,'sex':'男'}
        '书籍':
             ['游戏改变世界','肠子的小小心思','娱乐至死','权力']
        }
      • 键必须是不可变的数据类型 : int str (bool,tuple)

      • 优点:查询速度非常快,存储关联性的数据

      • 缺点:以空间换时间

  • 字典的创建方式

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

    dic = {[1,2,3]:'alex',1:666}  #键要不可变的数据类型
    print(dic)
    
    dic = {1:'alex',1:'太白',2:'金星'}
    print(dic)
  • 字典的增删改查

    dic = {'name':'太白','age':18,'books':['稀缺','穷爸爸富爸爸','为什么学生不喜欢上学']}
    
    #增  2
    #dic[]  直接增加,无则增加,有则改之
    dic['age'] = 25   #改
    print(dic)
    dic['sex'] = '男'  #加
    print(dic)
    #setdefault  有则不变,无则加之
    dic.setdefauit('sex')  #dic = {'name':'太白','age':18,'books':['稀缺','穷爸爸富爸爸','为什么学生不喜欢上学'],'sex':None}
    dic.setdefault('sex','男')
    dic.setdefault('age',25)
    
    #删 3
    #pop 
    #  按照键删除键值对,有返回值;
    #  设置一个没有的元素,报错
    #  设置两个元素,即使字典中没有改键也不报错
    dic.pop('name')
    ret = dic.pop('name')
    dic.pop('sex')
    dic.pop('sex':'没有此键')
    print(dic)
    #clear 清空列表
    dic.clear()
    print(dic)
    #del  按照元素删除,字典中没有键会报错
    del dic['name']
    print(del)
    del dic['sex']
    print(del)
    
    #改 
    dic['name'] = '金星'
    
    #查 2
    print(dic['name'])
    print(dic['name1'])
    #get
    li = dic.get('name')
    print(li)
    li = dic.get('name1')
    li = dic.get('name1','没有此键') #可以设置返回值
    print(li)
    
    #三个特殊
    #keys()  values()  items()
    #keys()
    print(dic.keys())
    #转化成列表
    print(list(dic.keys()))
    for key in dic.keys():
        print(key)
    for key in dic:
        print(key)
    
    #values()
    print(dic.values())
    #转化列表
    print(list(dic.values()))
    for value in dic.values():
        print(value)
    
    #items()
    print(dic.items())
    for key value in dic.items():
        print(key,value)
    a,b = (12,13)
    print(a,b)
    a = 12
    b = 13
    a,b = b,a
    print(a,b)#13 12

    练习

    dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
    # 请在字典中添加一个键值对,"k4": "v4",输出添加后的字典
    dic['k4'] = 'v4'
    dic.setdefault('k4','v4')
    print(dic)
    # 请在修改字典中 "k1" 对应的值为 "alex",输出修改后的字典
    dic['k1'] = 'alex'
    print(dic)
    # 请在k3对应的值中追加一个元素 44,输出修改后的字典
    dic['k3'].append(44)
    print(dic)
    # 请在k3对应的值的第 1 个位置插入个元素 18,输出修改后的字典
    dic['k3'].insert(2,18)
    print(dic)
  • 字典的嵌套

    dic = {
        'name': '汪峰',
        'age': 48,
        'wife': [{'name': '国际章', 'age': 38},],
        'children': {'girl_first': '小苹果','girl_second': '小怡','girl_three': '顶顶'}
    }
    
    # 1. 获取汪峰的名字。
    dic['name']
    dic.get('name')
    # 2.获取这个字典:{'name':'国际章','age':38}。
    dic['wife'][0]
    # 3. 获取汪峰妻子的名字。
    dic['wife'][0]['name']
    # 4. 获取汪峰的第三个孩子名字。
    dic['childen']['girl_three']

4总结

  • 字典:查询速度快,数据关联性强
    • 键为不可变数据类型, (str,int,bool,tuple) 唯一
    • 值为任意数据类型,对象
    • 增删改查,三个特殊
    • 字典的嵌套

猜你喜欢

转载自www.cnblogs.com/xiaohei-chen/p/11870081.html
003