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

    一、字典类型内置方法(dict)

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

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

    dic = {'a': 1, 'b': 2}  # dic = dict({'a':1,'b':2})
    

    print(f"dic: {dic}")

    dic: {'a': 1, 'b': 2}
    
    dic = dict(a=1, b=2, c=3)
    
    print(f"dic: {dic}")
    
    dic: {'a': 1, 'b': 2, 'c': 3}
    
    dic = {1: 'a', 0: 'b'}
    
    print(f"dic[0]: {dic[0]}")  # 无法区分dic是列表,还是字典,并且key不再具有描述信息
    
    dic[0]: b
    
    dic = {[1,2]: 'a', 0: 'b'}  # 报错
    

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

    1.1 优先掌握(*****)

    1. 按key存取值:可存可取

    2. 长度len

    3. 成员运算in和not in

    4. 删除del

    5. 键keys()、值values()、键值对items()

    6. 循环

    1.按key存取值:可存可取

    # dic之按key存取值
    dic = {'a': 1, 'b': 2}
    

    print(f"first dic['a']: {dic['a']}")

    dic['a'] = 3

    print(f"second dic['a']: {dic['a']}")

    first dic['a']: 1
    second dic['a']: 3
    

    2.长度len

    # dic之长度len
    dic = {'a': 1, 'b': 2}
    

    print(f"len(dic): {len(dic)}")

    len(dic): 2
    

    3.成员运算in和not in

    # dic之成员运算in和not in
    dic = {'a': 1, 'b': 2}
    

    print(f"'a' in dic: {'a' in dic}")
    print(f"1 in dic: {1 in dic}")

    'a' in dic: True
    1 in dic: False
    

    4.删除

    # dic之删除del
    dic = {'a': 1, 'b': 2}
    del dic['a']
    

    print(f"dic.get('a'): {dic.get('a')}")

    dic.get('a'): None
    
    # dic之删除pop()
    dic = {'a': 1, 'b': 2}
    dic.pop('a')  # 指定元素删除
    
    print(f"dic.pop('b'): {dic.pop('b')}")
    print(f"dic.get('a'): {dic.get('a')}")
    
    dic.pop('b'): 2
    dic.get('a'): None
    
    # dic之删除popitem()
    dic = {'a': 1, 'b': 2}
    
    print(f"dic.popitem(): {dic.popitem()}")  # popitem() 方法随机返回并删除字典中的一对键和值(一般删除末尾对)。
    
    dic.popitem(): ('b', 2)
    

    5.键keys()、值values()、键值对items()

    # dic之键keys()、值values()、键值对items(),python2中取出的是列表(鸡蛋);python3中取出的是元组(鸡)
    dic = {'a': 1, 'b': 2}
    

    print(f"dic.keys(): {dic.keys()}")
    print(f"dic.values(): {dic.values()}")
    print(f"dic.items(): {dic.items()}")

    dic.keys(): dict_keys(['a', 'b'])
    dic.values(): dict_values([1, 2])
    dic.items(): dict_items([('a', 1), ('b', 2)])
    

    6.循环

    # dic之循环
    # dic是无序的,但是python3采用了底层优化算法,所以看起来是有序的,但是python2中的字典是无序
    dic = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
    

    for k, v in dic.items(): # items可以换成keys()、values()
    print(k, v)

    a 1
    b 2
    c 3
    d 4
    

    1.2 需要掌握(****)

    1. get

    2. update

    3. fromkeys

    4. setdefault

    1.get()

    # dic之get()
    dic = {'a': 1, 'b': 2}
    

    print(f"dic.get('a'): {dic.get('a')}")
    print(f"dic.get('c'): {dic.get('c')}")

    dic.get('a'): 1
    dic.get('c'): None
    

    2.update()

    # dic之update()
    dic1 = {'a': 1, 'b': 2}
    dic2 = {'c': 3}
    dic1.update(dic2)
    

    print(f"dic1: {dic1}")

    dic1: {'a': 1, 'b': 2, 'c': 3}
    

    3.fromkeys()

    # dic之fromkeys()
    dic = dict.fromkeys(['name', 'age', 'sex'], None)
    

    print(f"dic: {dic}")

    dic: {'name': None, 'age': None, 'sex': None}
    

    4.setdefault()

    # dic之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}
    

    二、练习

    统计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}
    

    4.存一个值or多个值:多个值,值可以是多个类型,key必须是不可变类型,通常应该是不可变类型中的字符串类型

    5.有序or无序:无序

    dic = {'a': 1, 'b': 2}
    print(f'first:{id(dic)}')
    dic['a'] = 3
    print(f'second:{id(dic)}')
    
    first:4356627632
    second:4356627632
    

    6.可变or不可变:可变数据类型

  • 相关阅读:
    Android开发之Sqlite的使用
    ZOJ 3607 Lazier Salesgirl
    ZOJ 3769 Diablo III
    ZOJ 2856 Happy Life
    Ural 1119 Metro
    Ural 1146 Maximum Sum
    HDU 1003 Max Sum
    HDU 1160 FatMouse's Speed
    Ural 1073 Square Country
    Ural 1260 Nudnik Photographer
  • 原文地址:https://www.cnblogs.com/abdm-989/p/11459717.html
Copyright © 2011-2022 走看看