zoukankan      html  css  js  c++  java
  • 基本数据类型-----字典(Dictionary)

    一、字典(Dictionary)

        字典是另一种可变容器模型,且可存储任意类型对象。

        值可以取任何数据类型,也可以嵌套多层,但键必须是不可变的,如字符串,数字或元组,这些键会转为hash值存储起来;键不可以列表,布尔值,字典,因为这些不可以转为hash值存储起来

        字典是无序的,每次用print函数输出的结果顺序都不一定相同。

        字典的每个键值 key=>value 用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:

    info = {'k1' : 'v1' ,  'k2' :  123 }
    键 值 键 值
    • 索引取值
    info = {
        "k1": 18,
        2: True,
        "k3": [
            11,
            [],
            (),
            22,
            33,
            {
                'kk1': 'vv1',
                'kk2': 'vv2',
                'kk3': (11,22),
            }
        ],
        "k4": (11,22,33,44)
    }
    v = info['k1']
    print(v)
    v = info[2]
    print(v)
    v = info['k3'][5]['kk3'][0]         ##多层嵌套的取值
    print(v)

    输出:

      18
      True
      11

    • del删除
    info = {
        "k1": 18,                 ##被删除部分
        2: True,
        "k3": [
            11,
            [],
            (),
            22,
            33,
            {
                'kk1': 'vv1',     ##被删除部分
                'kk2': 'vv2',
                'kk3': (11,22),
            }
        ],
        "k4": (11,22,33,44)
    }
    
    输出:{2: True, 'k3': [11, [], (), 22, 33, {'kk2': 'vv2', 'kk3': (11, 22)}], 'k4': (11, 22, 33, 44)}
    • for循环
    info = {
        "k1": 18,
        2: True,
        "k3": [
            11,
            [],
            (),
            22,
            33,
            {
                'kk1': 'vv1',
                'kk2': 'vv2',
                'kk3': (11,22),
            }
        ],
        "k4": (11,22,33,44)
    }
    
    for item in info:               
        print(item)                     ##默认输出所有的key
    
    for item in info.keys():
        print(item)                     ##输出所有的key
     
    for item in info.values():
        print(item)                     ##输出所有的values
    
    for item in info.keys():
        print(item,info[item])          ##输出所有的key,并使用索引同时输出key所对应的value
    
    for k,v in info.items():
        print(k,v)                      ##同时取出key和value,分别赋值给k和v,然后输出

    输出:

    k1
    2
    k3
    k4
    k1
    2
    k3
    k4
    18
    True
    [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}]
    (11, 22, 33, 44)
    k1 18
    2 True
    k3 [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}]
    k4 (11, 22, 33, 44)
    k1 18
    2 True
    k3 [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}]
    k4 (11, 22, 33, 44)

    二、python中字典的函数&方法

      内置函数

      内置方法

     

    1.根据序列,创建字典,并指定统一的值

    v = dict.fromkeys(["k1",123,"999"],123)     #前边的列表是所有的key, 后边的123是值,将分别赋给三个key,即三个key的value都是123
    print(v)

    输出:

    2.根据Key获取值,key不存在时,可以指定默认值(None)

    dic = {
        "k1": 'v1',
        "k2": 'v2'
    }
    
    # v = dic['k11']
    # print(v)                           ##使用索引,当key 'k11' 不存在时就会报错,所以该方法有弊端
    
    #v = dic.get('k11')
    #print(v)                            ##使用get方法,当key不存在时会输出None
    
    #v = dic.get('k11',123)
    #print(v)                            ##get方法可以添加两个参数,当指定的key不存在时,get方法会将括号内的第二个参数赋给key,当key已经存在时,第二个参数将会失效

    3.删除

    • 删除(用一个参数接收)
    dic = {
        "k1": 'v1',
        "k2": 'v2'
    }
    v = dic.pop('k1')         ##将取出的k1的值赋给v
    print(dic,v)
    
    dic = {
        "k1": 'v1',
        "k2": 'v2'
    }
    v = dic.pop('k11',90)     ##当指定的key(k11)存在时,指定的value(90)会失效,k11不存在时,v等于指定的value90
    print(dic,v)

    输出:

    • 删除(用两个参数接收)
    dic = {
        "k1": 'v1',
        "k2": 'v2'
    }
    k,v = dic.popitem()    ##随机删除一对
    print(dic,k,v)

    输出:

     4 .设置值

    已存在,不设置,获取当前key对应的值
    不存在,设置,获取当前key对应的值
    dic = {
        "k1": 'v1',
        "k2": 'v2'
    }
    v = dic.setdefault('k1','123')     ##当key存在时,后边指定的值会失效
    print(dic,v)
    v
    = dic.setdefault('k11','123') print(dic,v)

    输出:

     

    5.更新(update)

    dic = {
        "k1": 'v1',
        "k2": 'v2'
    }
    dic.update({'k1': '111111','k3': 123})     ##已存在的更新,不存在的加上去
    print(dic)
    dic.update(k1=123,k3=345,k5="asdf")
    print(dic)

    输出:

    三、补充

    1.字符串

    tempalte = "i am {name}, age : {age}"
    #v = tempalte.format(name='alex',age=19)                ##和下面的方法效果相同
    v = tempalte.format(**{"name": 'alex','age': 19})       ##加入两个**即可将字典加入 print(v)

    输出:

    2.字典

    使用in时:

    dic = {'k1' : 'v1' , 'k2' : 'v2' }
    
    v = 'k1'  in   dic
    print(v)     ##输出True
    
    v = 'v1'  in   dic
    print(v)     ##输出False
    
    判断values时,使用v = 'v1'  in  dic.values()

    3.布尔值

    bool值只有 False(0) 和True(1) 两种

    bool(...)经常用来判断真假

    bool值为False常见的有:0 、None、空字符串、空字典、空列表、空元组其他都是True

  • 相关阅读:
    Log4Net的使用之winform
    开源一个跨平台运行的服务插件
    定时管理器框架-Task.MainForm
    nginx+iis+redis+Task.MainForm构建分布式架构 之 (redis存储分布式共享的session及共享session运作流程)
    关于SQL查询效率,100w数据,查询只要1秒
    写的一般,从起源到具体算法-深度学习综述
    如何避免SHRINKDATABASE & SHRINKFILE 产生索引碎片(转载)
    在windows service中启动类型“Automatic” 和 “Automatic (Delayed start)” 有何不同?
    C# 对WinForm应用程序的App.config的加密
    SQL Server中怎么查看每个数据库的日志大小,以及怎么确定数据库的日志文件,怎么用语句收缩日志文件
  • 原文地址:https://www.cnblogs.com/foever-lee/p/9980412.html
Copyright © 2011-2022 走看看