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

    字典数据类型内置方法

    一、作用

    给值添加描述信息作用

    二、定义方式

    使用{}一逗号隔开加入键值对key,value,key为不可变类型(int,float,str,tup,bool)且key不可重复

    info_dict = {'name': 'laowang', 'age': 18, 'height': 180, 'weight': 140}
    info_dict1 = ({'name': 'laowang', 'age': 18, 'height': 180, 'weight': 140})
    print(info_dict)
    print(info_dict1)
    
    

    结果:

    {'name': 'laowang', 'age': 18, 'height': 180, 'weight': 140}
    {'name': 'laowang', 'age': 18, 'height': 180, 'weight': 140}

    逻辑思维

    先打印

    执行完之后(看值的结果)

    多在纸上画

    三、常用内置方法

    主要方法

    1. 按key取值,即可删除也可以改变

      info_dict = {'name': 'laowang', 'age': 18, 'height': 180, 'weight': 140}
      print(info_dict['name'])
      info_dict['age'] = 19
      print(info_dict)
      

      结果:

      laowang
      {'name': 'laowang', 'age': 19, 'height': 180, 'weight': 140}

    2. 长度len()

      info_dict = {'name': 'laowang', 'age': 18, 'height': 180, 'weight': 140}
      print(len(info_dict))
      

      结果:

      4

    3. in/ not in 是根据key进行比较

      info_dict = {'name': 'laowang', 'age': 18, 'height': 180, 'weight': 140}
      print('name' in info_dict)
      

      结果:
      True

    4. for循环默认打印key值

      for i in info_dict:
          print(i)
      

      结果:

      name
      age
      height
      weight

    5. keys/values/items/(items用的最多,一般和解压缩一起使用

    info_dict = {'name': 'laowang', 'age': 18, 'height': 180, 'weight': 140}
    
    print(info_dict.keys())
    
    print(list(info_dict.values()))
    
    print(info_dict.items())
    print(list(info_dict.items()))
    
    # 获取key和v
    for k, v in info_dict.items():
        print(k, v)
    

    结果:

    dict_keys(['name', 'age', 'height', 'weight'])
    ['laowang', 18, 180, 140]
    dict_items([('name', 'laowang'), ('age', 18), ('height', 180), ('weight', 140)])
    [('name', 'laowang'), ('age', 18), ('height', 180), ('weight', 140)]

    name laowang
    age 18
    height 180
    weight 140

    1. 删除del

      dic = {'a': 1, 'b': 2}
      del dic['a']
      
      print(f"dic.get('a'): {dic.get('a')}")
      

      结果:

      dic.get('a'): None

    需要掌握

    1. 复制copy(),id不同

      info_dict = {'name': 'laowang', 'age': 18, 'height': 180, 'weight': 140}
      print(info_dict.copy())
      

      结果:

      {'name': 'laowang', 'age': 18, 'height': 180, 'weight': 140}

    2. 删除pop

    info_dict.pop('name') # 根据key删除
    print(info_dict)
    

    结果:

    {'age': 18, 'height': 180, 'weight': 140}

    1. 删除默认一项

    早期的时候字典是无序的,是随机删除的,但是 由于python3底层优化了字典,让字典看得貌似有序, 所以删除最后一个

    info_dict = {'name': 'laowang', 'age': 18, 'height': 180, 'weight': 140}
    info_dict.popitem()
    print(info_dict)
    
    
    

    结果:

    {'name': 'laowang', 'age': 18, 'height': 180}

    1. 清除字典

      info_dict = {'name': 'laowang', 'age': 18, 'height': 180, 'weight': 140}
      
      info_dict.clear()
      print(info_dict)
      

      结果:

      {}

    2. get方法, 如果有,就返回真正的值,如果没有,默认返回none,可以指定返回结果,如果,不存在key,可以设置返回值

      info_dict = {'name': 'laowang', 'age': 18, 'height': 180, 'weight': 140}
      
      print(info_dict.get('age'))
      print(info_dict.get('hobby'))
      print(info_dict.get('hobby', 'run'))
      

      结果:

      18

      None

      run

    3. 设置默认值 setdefault(),如果key不存在,将其和值添加进去,如果存在,不改变其值

    info_dict = {'name': 'laowang', 'age': 18, 'height': 180, 'weight': 140}
    
    info_dict.setdefault('hobby', 'run')
    print(info_dict)
    info_dict.setdefault('age', 34)
    print(info_dict)
    

    结果:

    {'name': 'laowang', 'age': 18, 'height': 180, 'weight': 140, 'hobby': 'run'}
    {'name': 'laowang', 'age': 18, 'height': 180, 'weight': 140, 'hobby': 'run'}

    1. 添加值update(),有重复key则会被覆盖掉,重新赋值

      info_dict = {'name': 'laowang', 'age': 18, 'height': 180, 'weight': 140}
      
      info_dict.update({'hobby': 'run'})
      print(info_dict)
      

      结果:
      {'name': 'laowang', 'age': 18, 'height': 180, 'weight': 140, 'hobby': 'run'}

    2. fromkeys有字典dict点出来的,快速造一个字典,默认值为None,也可以设置默认值

    print(dict.fromkeys([12, 3, 4, 4, 5, 6]))
    print(dict.fromkeys([12, 3, 4, 4, 5, 6], 'randy'))
    

    结果:

    {12: None, 3: None, 4: None, 5: None, 6: None}
    {12: 'randy', 3: 'randy', 4: 'randy', 5: 'randy', 6: 'randy'}

    1. 词频统计
    s='hello randy randy say hello  hello hello '
    
    l=s.split()
    
    dic={}
    for item in l:
        if item in dic:
            dic[item]+=1
        else:
            dic[item]=1
    print(dic)
    

    四、存在一个值还是多个值

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

    五、有序 or 无序

    无序

    六、可变 or 不可变

    可变数据类型 (可变:值可变id不变并且不可哈希,不可变:值可变,id可变并且可以哈希)

    七、总结

    7.1 常用操作

    1. 按key存取值:可存可取
    2. 长度len
    3. 成员运算in和not in
    4. 删除del
    5. 键keys()、值values()、键值对items()
    6. 循环

    7.2 常用方法

    1. get
    2. update
    3. fromkeys
    4. setdefault

    '''
    key 哈希处理 纯数字序列 哈希函数 哈希值
    'a' --》 12 --》 3
    'b' --》 14 --》 5
    'c' --》 24 --》 6
    'd' --》 21 --》 3
    '''

    1. 为什么key是可变数据类型

    dic = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

    dic['a']

    2. 为什么key不能重名

    dic = {'a':1, 'a':2} # key不能重名
    print(dic['a'])

    3. 字典为什么是乱序的

    4. 散列表(哈希表)解决了什么问题

    '''
    1,2,3,4,,,6,,,7,,7,,,7,n n次

    '''

    '''
    1,2,2,2,,2,,,,2,2,2
    '''

    在当下的阶段,必将由程序员来主导,甚至比以往更甚。
  • 相关阅读:
    IntelliJ IDEA给Serializable类加上自动的serialVersionUID
    对于 Netty ByteBuf 的零拷贝(Zero Copy) 的理解
    mybatis 多对多
    unnamed not found for the web module
    Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown error 1146
    Caused by: java.lang.IllegalArgumentException: Parameter Maps collection does not contain value for com.bj186.crm.pojo.User
    mybatis中配置中引入properties文件
    Caused by: java.lang.IllegalArgumentException: Parameter Maps collection does not contain value for com.bj186.crm.mapper.UserMapper.Integer
    Caused by: java.lang.ClassNotFoundException: Cannot find class: User
    ERROR StatusLogger Log4j2 could not find a logging implementation. Please add log4j-core to the classpath
  • 原文地址:https://www.cnblogs.com/randysun/p/11305622.html
Copyright © 2011-2022 走看看