zoukankan      html  css  js  c++  java
  • 43-字典类型内置方法

    字典类型内置方法

    一.字典类型内置方法

    1.用途

    存多个值,但每一个值都有一个key与之对应,key对值有描述功能。多用于存的值表示的是不同的状态时,例如存的值有姓名、年龄、身高、体重、爱好等。

    2.定义

    {}内用逗号隔开多个元素,每一根元素都是以key:value的形式,value可以是任意数据类型,而key通常应该是字符串类型,但是key必须为不可变类型。

    name = {'name1':'lwx','name2':'hanye'}
    print(name)
    
    # {'name1': 'lwx', 'name2': 'hanye'}
    
    name = dict(name1 = 'lwx',name2 = 'hanye')
    print(f'name:{name}')
    
    # name:{'name1': 'lwx', 'name2': 'hanye'}
    
    name = {'name1': 'lwx', 'name2': 'hanye'}
    print(f"name[name1]: {name['name1']}")
    
    #name[name1]: lwx
    
    

    二.常用操作+内置方法

    常用操作和内置方法分为优先掌握(今天必须得记住)、需要掌握(一周内记住)两个部分

    2.1优先掌握

    2.1.1 按key存取值:可存可取

    # dic之按key存取值
    name = {'name1':'lwx','name2':'hanye','time':'all'}
    print(f"name[name1]:{name['name1']}")
    
    name['time'] = 'forever'
    print(name)
    
    # name[name1]:lwx
    # {'name1': 'lwx', 'name2': 'hanye', 'time': 'forever'}
    
    

    2.1.2 长度len

    #dic之长度len
    name = {'name1':'lwx','name2':'hanye','time':'all'}
    print(f'len(name):{len(name)}')
    
    # len(name):3
    

    2.1.3 成员运算in和not in

    # dic之成员运算in和not in
    name = {'name1':'lwx','name2':'hanye','time':'all'}
    print(f"'name1' in name:{'name1' in name}")
    print(f"'lwx' in name:{'lwx' in name}")
    
    # 'name1' in name:True
    # 'lwx' in name:False
    

    2.1.4 删除del

    # dic之删除del
    name = {'name1':'lwx','name2':'hanye','time':'all'}
    del name['time']
    print(name)
    print(name.get('time'))
    
    # {'name1': 'lwx', 'name2': 'hanye'}
    # None     或得不到,返回None
    
     # dic之删除pop
    name = {'name1':'lwx','name2':'hanye','time':'all','haha':'lala'}
    name.pop('time')		# 指定元素删除
    print(f"name.pop('haha'):{name.pop('haha')}")    #打印删除的key对应的值       
    print(f"name.get('time'):{name.get('time')}")
    
    # name.pop('haha'):lala
    # name.get('time'):None
    
    # dic之删除popitem()
    # popitem() 方法随机返回并删除字典中的一对键和值(一般删除末尾对)。
    name = {'name1':'lwx','name2':'hanye','time':'all','haha':'lala'}
    print(f"name.popitem():{name.popitem()}")
    
    # name.popitem():('haha', 'lala')
    

    2.1.5 键keys()、值values()、键值对items()

    # dic之键keys()、值values()、键值对items()的输出
    name = {'name1':'lwx','name2':'hanye','time':'all'}
    print(f"name.keys:{name.keys()}")
    print(f"name.values():{name.values()}")
    print(f"name.items():{name.items()}")
    
    # name.keys:dict_keys(['name1', 'name2', 'time'])
    # name.values():dict_values(['lwx', 'hanye', 'all'])
    # name.items():dict_items([('name1', 'lwx'), ('name2', 'hanye'), ('time', 'all')])
    
    

    2.1.6 循环

    # dic之循环
    # dic是无序的,但是python3采用了底层优化算法,所以看起来是有序的,但是python2中的字典是无序
    name = {'name1':'lwx','name2':'hanye','time':'forever'}
    
    for k,v in name.items():
        print(f'{k: <7} {v}')
    
    # name1   lwx
    # name2   hanye
    # time    forever
    

    2.2 需要掌握

    2.2.1 get()

    # dic之get()
    name = {'name1':'lwx','name2':'hanye','time':'forever'}
    
    print(f"name.get('name1'):{name.get('name1')}")
    print(f"naem.get('hiahiahia'):{name.get('hiahiahia')}")
    
    # name.get('name1'):lwx
    # naem.get('hiahiahia'):None
    

    2.2.2 update()

    # dic之update()
    name = {'name1':'lwx','name2':'hanye','time':'forever'}
    name2= {'deep':'in heart'}
    name.update(name2)
    print(name)
    
    # {'name1': 'lwx', 'name2': 'hanye', 'time': 'forever', 'deep': 'in heart'}
    

    2.2.3 fromkeys()

    dic = dict.fromkeys(['name','age','sex'],None)
    print(f'dic:{dic}')
    
    # dic:{'name': None, 'age': None, 'sex': None}
    

    2.2.4 setdefault()

    # 有指定key不会改变值;无指定key则改变值
    dic = {'a': 1, 'b': 2}
    
    print(f"dic.setdefault('a'): {dic.setdefault('a',3)}")
    print(f"dic: {dic}")
    print(f"dic.setdefault('c'): {dic.setdefault('c',3)}")
    print(f"dic: {dic}")
    
    # dic.setdefault('a'): 1
    # dic: {'a': 1, 'b': 2}
    # dic.setdefault('c'): 3
    # dic: {'a': 1, 'b': 2, 'c': 3}
    

    三.练习

    1.统计单词的个数

    统计s='hello tank tank say hello sb sb'中每个单词的个数

    结果如:{'hello': 2, 'tank': 2, 'say': 1, 'sb': 2}

    s='hello tank tank say hello sb sb'
    
    l = s.split()
    
    dic ={}
    for item in l:
        if item in dic:
            dic[item]+=1
        else:
            dic[item]=1
    print(dic)
    
    # {'hello': 2, 'tank': 2, 'say': 1, 'sb': 2}
    
    

    2.存一个值还是多个值

    多个值,值可以使多个数据类型,key必须是不可变数据类型,通常是不可变数据类型中的字符串

    3.有序或无序

    无序

    4.可变或不可变

    dic = {'a': 1, 'b': 2}
    print(f'first:{id(dic)}')
    dic['a'] = 3
    print(f'second:{id(dic)}')
    
    # first:50821088
    # second:50821088
    
    
  • 相关阅读:
    LeetCode "Group Shifted Strings"
    LeetCode "Read N Characters Given Read4 II
    LeetCode "Factor Combinations"
    LeetCode "Paint House II"
    LeetCode "Shortest Word Distance II"
    LeetCode "Flatten 2D Vector"
    LeetCode "Meeting Rooms II"
    iOS开发UI篇—UITableview控件使用小结
    ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局
    iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局
  • 原文地址:https://www.cnblogs.com/LWX-YEER/p/11379636.html
Copyright © 2011-2022 走看看