zoukankan      html  css  js  c++  java
  • python字典类型

    字典类型

    一、字典(dict)

    如果现在需要存储我的信息,通过我们之前学习的数据类型,只有列表能够存储我们的信息。使用列表虽然达到了我们的目的,但是我们能通过列表取值的时候,是基于我们已经知道了列表内部所有的元素。因此我们是不是可以给列表内的每一个元素都添加一个描述信息呢?否则如果不是存我的信息,而是用列表存取了成千上万个值,那么我们怎么通过索引精准取值呢?这样看起来好像是不可能的,因此可以使用新的数据类型——字典。

    1.1作用

    用来存取多个值,按照key:value的方式存储,取的时候可以通过key而非索引取值,key对value具有描述性的作用。存放数据的种类各种各样并且数据较多的时候可以使用字典。

    1.2定义

    {}内用逗号分隔开多个元素,每一个元素都是key:value的格式,在其中value是任意格式的数据类型,key由于具有描述性的作用,所以key通常是字符串的类型。

    user_info = {'name': 'python', 'gender': 'male', 'age': 19,
                 'company_info': ['oldboy', 'shanghai', 50]}
    
    print(id(user_info))
    print(type(user_info))
    print(user_info)
    
    输出:
    2084781392344
    <class 'dict'>
    {'name': 'python', 'gender': 'male', 'age': 19, 'company_info': ['oldboy', 'shanghai', 50]}
    
    

    1.3作用

    字典取值不再依赖索引,而是依赖于key,通过[key]即可获取对应的value值。

    #字典中套列表
    user_info = {'name': 'python', 'gender': 'male', 'age': 19,
                 'company_info': ['oldboy', 'shanghai', 50]}
    
    print(user_info['name'])
    print(user_info['company_info'][1])
    
    输出:
    python
    shanghai
    
    
    #字典中套字典
    user_info = {'name': 'python', 'gender': 'male', 'age': 19,
                 'company_info': {'c_name':'oldboy','adder': 'shanghai', 'age':50}}
    
    print(user_info['name'])
    print(user_info['company_info']['c_name'])
    
    
    输出:
    python
    oldboy
    

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

    2.1常用操作+内置方法(优先掌握)

    1. 按key值存取值:可存可取也可以改变

      dic = {'a':1,'b':2}
      print(f"first dic['a']:{dic['a']}")
      输出:
      first dic['a']:1
      
      dic['a'] = 3
      print(f"first dic['a']:{dic['a']}")
      
      输出:
      first dic['a']:3
          
      dic['a'] = 2
      print(dic)
      #输出:
      {'a':2,'b':2}
      
    2. 长度len

      dic = {'a':1,'b':2}
      print(f"len(dic):{len(dic)}")
      输出:
      len(dic):2
      
    3. 成员运算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. 删除del、pop()、popitem()删除键值对,默认删除最后一个。

      dic = {'a':1,'b':2}
      print(dic['a'])
      
      print(f"dic.get('a'):{dic.get('a')}")
      
      del dic['a']
      
      print(f"dic.get('a'):{dic.get('a')}")
      输出:
      1
      dic.get('a'):1
      dic.get('a'):None
          
      
      #dict 删除之pop()
      dic = {'a':1,'b':2}
      dic.pop('a')
      print(dic['b'])
      print(f"dic.pop('b'):{dic.pop('b')}")
      print(f"dic.get('a'):{dic.get('a')}")
      输出:
      2
      dic.pop('b'):2
      dic.get('a'):None
      
      #dict 删除之popitem()
      dic = {'a':1,'b':2}
      ## 随机删除一个元素,无法指定
      print(f"dic.popitem():{dic.popitem()}")
      
      print(f"dic.popitem():{dic.popitem()}")
      输出:
      dic.popitem():('b', 2)
      dic.popitem():('a', 1)
      
    5. 键key(),值value(),键值对items() item用的最多,与解压缩联合使用。

      # dic键keys(),值values(),键值对items()
      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)])#套元组
      
      info_dict = {'name': 'wangdapao', 'age': 18, 'height': 120, 'gender': 'female', 'hobby_list': ['dapao', '666', '233']}
      print(info_dict.items())
      
      for i in info_dict.items():
          print(i)
      
      for k, v in info_dict.items():
          print(k, v)
      
      lt = [[1, 2, 3], [2, 3, 4], [5, 6, 7]]
      for a, b, c in lt:
          print(a, b, c)
      #输出:
      dict_items([('name', 'wangdapao'), ('age', 18), ('height', 120), ('gender', 'female'), ('hobby_list', ['dapao', '666', '233'])])
      ('name', 'wangdapao')
      ('age', 18)
      ('height', 120)
      ('gender', 'female')
      ('hobby_list', ['dapao', '666', '233'])
      name wangdapao
      age 18
      height 120
      gender female
      hobby_list ['dapao', '666', '233']
      1 2 3
      2 3 4
      5 6 7
      
    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
      

    2.2掌握下面内置方法

    1. get(获取),如果没有,返回None,也可以指定返回值1

      dic = {'a':1,'b':2}
      
      print(f"dic.get('a'):{dic.get('a')}")
      print(f"dic.get('c'):{dic.get('c')}")
      print(dic.get('c',3))
      输出:
      dic.get('a'):1
      dic.get('c'):None
      3
      
    2. update(添加)更新

      dic = {'a':1,'b':2}
      dic1 = {'c':3}
      dic.update(dic1)
      print(f"dic:{dic}")
      输出:
      dic:{'a': 1, 'b': 2, 'c': 3}
      
    3. fromkeys(集体添加并赋值)

      dic = dict.fromkeys(['name','age','sex'],None)
      print(dic)
      输出:
      dic:{'name': None, 'age': None, 'sex': None}
      
      dic = dict.fromkeys(['name','age','sex'],2)
      
      print(f"dic:{dic}")
      输出:
      dic:{'name': 2, 'age': 2, 'sex': 2}
      
    4. setdefault(添加字典),有则不变,无则往里面添加值。

      # dic之setdefault(),有指定key不会改变值;无指定key则改变值
      dic = {'a':1,'b':2,}
      print(f"dic.setdefailt('a'):{dic.setdefault('a',3)}")
      
      print(f"dic:{dic}")
      
      print(f"dic.setfailt('c'):{dic.setdefault('c',3)}")
      
      print(f"dic:{dic}")
      输出:
      dic.setdefailt('a'):1
      dic:{'a': 1, 'b': 2}
      dic.setfailt('c'):3
      dic:{'a': 1, 'b': 2, 'c': 3}
      
      
    5. clear()清空

      dic={1:1,2:2,3:3}
      print(dic)
      dic.clear()
      print(dic)
      
      #输出:
      {1: 1, 2: 2, 3: 3}
      {}
      
      
    6. copy()复制

      dic={1:1,2:2,3:3}
      print(dic)
      dic1 = dic.copy()
      print(dic1)
      #输出:
      {1: 1, 2: 2, 3: 3}
      {1: 1, 2: 2, 3: 3}
      
      

    练习

    s = 'hello tank tank say hello sb sb'
    l = s.split(' ')#对字符串分割以空格为分界线
    print(l)
    print(type(l))## 分割之后为列表
    dic = {}
    for item in l :
        if item in dic :
            dic[item] += 1
        else:
            dic[item] = 1
    print(dic)
    输出:
    ['hello', 'tank', 'tank', 'say', 'hello', 'sb', 'sb']
    <class 'list'>
    {'hello': 2, 'tank': 2, 'say': 1, 'sb': 2}
    
  • 相关阅读:
    Myeclipse安装svn插件
    Hudson+Maven+Svn搭建持续集成环境
    svn merge和branch分析
    Linux下安装subversion1.6.5和apache2
    C语言中,为什么字符串可以赋值给字符指针变量
    Loadrunner C 编程_1
    oracle解决多表关联分组查询问题
    学习英语
    使用 JMeter 完成常用的压力测试 [转]
    Jmeter零起点学习
  • 原文地址:https://www.cnblogs.com/SkyOceanchen/p/11270465.html
Copyright © 2011-2022 走看看