9.字典类型

目录

·作用,定义:

·数据类型转换(造字典)

    ·内置方法

        1.优先掌握(key取值,len(),删除3,各种取值方式,for循环)

        2.需要掌握(clear(),update,get(),setdafault())

·总结:


·作用,定义:

定义:
    {}内用逗号分隔开key:value,其中value可以是任意类型,但key必须是不可变类型且不能重复
        d1 = {'k1': 123, (123, 'v'): 456}
        print(d1['k1'])            # 123
        print(d1[(123, 'v')])      # 456
        print(type(d1))            # <class 'dict'>

    造空字典:
      方式1:
        d2 = dict()
        print(d2, type(d2))        # {} <class 'dict'>

      方式2:
        d3 = {}                    # 默认定义空字典
        print(d3, type(d3))        # {} <class 'dict'>

      例子:
        d4 = dict(x=1, y=2, z=3)
        print(d4)                  # {'x': 1, 'y': 2, 'z': 3}

·数据类型转换(造字典)

对值==>转换成字典:
    info = [['name', 'zcy'], ('age', 18), ['score', 98]]
    d5 = {}
    1.方法一:
        for i in info:
            d5[i[0]] = i[1]         # d5空字典的i[0]=i[1]
        print(d5)                   # {'name': 'zcy', 'age': 18, 'score': 98}

    1.1方法一进阶:
        for k, v in info:
            d5[k] = v
        print(d5)                   # {'name': 'zcy', 'age': 18, 'score': 98}

    2.方法二: 用dict直接造字典:一行代码搞定(必须是两个值)
        res = dict(info)
        print(res)                  # {'name': 'zcy', 'age': 18, 'score': 98}


单值==>转换成字典  快速(初始化)造字典:
    keys = ['name', 'age', 'score']
    1.方法一:
        d6 = {}
        for k in keys:
            d6[k] = None
        print(d6)                   # {'name': None, 'age': None, 'score': None}

    2.方法二:
        d7 = {}.fromkeys(keys, None)
        print(d7)                   # {'name': None, 'age': None, 'score': None}

    ·内置方法

        1.优先掌握(key取值,len(),删除3,各种取值方式,for循环)

1.按key存取值:可存可取
    d = {'k1': 123}
    针对赋值操作:key存在,则修改:
        d['k1'] = 222
        print(d)            # {'k1': 222}

    针对赋值操作:key不存在,则创建并添加进去:
        d['k2'] = 456
        print(d)            # {'k1': 123, 456}


2.长度len():若key重复就只取第一个
    d = {'k1': 111, 'k2': 222, 'k3': 444}
    print(len(d))           # 3


3.成员运算in和not in 值判断key
    d = {'k1': 111, 'k2': 222, 'k3': 444}
    print('k1' in d)        # True


4.删除
    d = {'k1': 111, 'k2': 222, 'k3': 444}
    4.1通用删除del:
        del d['k1']
        print(d)            # {'k2': 222, 'k3': 444}

    4.2.pop()删除 返回被删value值:
        res = d.pop('k2')
        print(d)            # {'k1': 111, 'k3': 444}
        print(res)          # 222

    4.3.popitem()随机删  返回元组:被删除的(key:value)
        res1 = d.popitem()
        print(d)            # {'k1': 111, 'k2': 222}
 

5.键keys(),值values(),健值对items()
    d = {'k1': 111, 'k2': 222, 'k3': 444}
    print(d.keys())        # 打印key值
    print(d.values())      # 打印value值
    print(d.items())       # key:value为元组的列表


6.for循环
    d = {'k1': 111, 'k2': 222, 'k3': 444}
    for i in d.keys():
        print(i)                # k1    k2    k3
    for j in d.values():
        print(j)                # 111    222    444
    for item in d.items():
        print(item)             # ('k1', 111)    ('k2', 222)    ('k3', 444)
    for k, v in d.items():
        print(k, v)             # k1 111        k2 222        k3 444
    循环后转换为列表:
        print(list(d.keys()))        # ['k1', 'k2', 'k3']
        print(list(d.values()))      # [111, 222, 444]
        print(list(d.items()))       # [('k1', 111), ('k2', 222), ('k3', 444)]

        2.需要掌握(clear(),update,get(),setdafault())

d = {'k1': 111}
1.clear():清除
    res = d.clear()
    print(res)            # {}


2.update():更新,将新字典加到老字典中   
           若新字典有与旧字典相同的key,以新字典key为主
    d.update({'k2': 222, 'k3': 333})
    print(d)              # {'k1': 111, 'k2': 222, 'k3': 333}


3.get():查key的索引,key不存在时返回None  容错性好
    print(d['k2'])                  # 报错
    print(d.get('k2')               # None
    print(d.get('k2', 123))         # 返回123


4.setdefault(): 当原字典中某key存在时,不添加,
                相反当原字典中某值不存在时,从set字典中添加到原字典中
                返回字典中key对应的值(value)
  当原字key典存在时:
    res = d.setdefault('k1', 222)
    print(d)                        # {'k1': 111}
    print(res)                      # 111
  当原字key典不存在时:
    res = d1.setdefault('k2', 2233)
    print(d)                        # {'k1': 111, 'k2': 2233}
    print(res)                      # 2233

·总结:

  1. 列表,元组为有序类型,    字典为无序类型
  2. 列表,元组,字典都能存多个值,称为容器类型
  3. 列表,字典为可变类型,     元组为不可变类型(只读不改)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值