• Python数据类型之字典


    1. 字典的定义

       字典是一个可变对象,它可以存储任意类型的对象。

       字典元素由键值对组成,字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 。

       其中键必须是唯一的,而值可以不唯一。值可以是任何数据类型,但键必须是不可变的,如字符串,数字或元组。

    2. 字典的创建

       格式:dict = {key1:value1, key2:value2, key3:value3}。

       空字典(不包含任何键值对)由两个大括号组成,如{}。

       dict1 = {}  # 定义一个空字典

       dict2 = {"name":"霜花似雪", "age":25, "height":171, "address":"广东深圳"}

       也可以使用dict()函数来创建字典,dict()函数可以将序列转化为字典

       例如:

       student = [("小明", 100), ("小兰", 98), ("小张", 88)]

       dict(student)  => 结果:{"小明":100, "小兰":98, "小张":88 }

       再例如:

       dict(name="霜花似雪", age=25, address="广东深圳")

       结果:{"name":"霜花似雪", "age":25, "address":"广东深圳"}

    3. 字典的基本操作

       (1)访问字典里的值

       通过字典名[key]的方式来访问字典里的值,

       例如:

       user = {"name":"霜花似雪", "age":25, "height":171, "address":"广东深圳"}

       user["name"]  => 结果:霜花似雪

       user["age"]   => 结果:25

       user["phone"] => 结果:报错,原因是键phone不存在

       (2)修改或添加字典元素

       通过给字典名[key]赋一个新值来修改字典;

       向字典添加新的键值对来向字典添加元素;

       例如:

       user = {"name":"霜花似雪", "age":25, "height":171, "address":"广东深圳"}

       user[name] = "东方不败"  # 修改

       user[age] = 30  # 修改

       user[phone] = "18295514499" # 添加

       (3)删除字典元素

        这里的删除指的是显式删除,显式删除一个字典使用del命令来实现,使用del可以删除字典的某个元素,也可以删除整个字典。

        user = {"name":"霜花似雪", "age":25, "height":171, "address":"广东深圳"}

        del user["age"]  # 删除字典中的age键值对

        del user  # 删除整个字典

    4. 字典健的特性

       (1)字典的键是唯一的,且是不可变对象,字典健可以是字符串,数字或元组。字典的值可以是任何对象(Python中一切皆对象),既可以是标准对象,也可以是用户定义的对象。

       (2)在一个字典中,不允许同一个键出现两次。创建字典时,如果同一个键出现两次,后面的键值对会覆盖前面的。

       (3)字典的键必须是不可变对象,可以是数字,字符串或元组,而不能是列表。

    5. 字典方法

       (1)len(dict) 用于获取字典的元素个数,换句话说是有几对键值对。

       (2)str(dict) 用于将字典转化为字符串,以可以打印的字符串表示。

       (3)type(dict) 用于返回输入的变量类型,如果变量是字典就返回字典类型。

    6. 字典的格式化字符串

       字典的格式化方式是在每个转换说明符中的%字符后面加上用圆括号括起来的键,再跟上其他说明元素。

       例如:

       user = {"name":"霜花似雪", "age":25, "height":171, "address":"广东深圳", "money": 123652562.7656256}

       print("%(name)s" %user)  => 结果: 霜花似雪

       print("%(age)d" %user)  => 结果: 25

       print("%(money).4f" %user)  => 结果: 123652562.7656

    7. 字典与列表的区别

       当字典和列表中的数据量很大时,list的查询效率会大大下降,而字典无论有多大,查询速度都会很快。

       字典的实现原理与查字典是一样的,查询速度很快。

       字典的特点是:

       (1)查找和插入的速度极快,不会因为随着key的增加而变慢。

       (2)字典需要占用大量的内存,内存浪费多。

       列表的特点是:

       (1)查找和插入时间随着元素的增加而增加。

       (2)列表占用的空间较小,内存浪费少。

       字典使用空间换时间,字典内部存放的顺序和键放入的顺序没有关系。

    代码示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    # author : liuhefei
    # Time : 2019/11/30
    # desc:  Python数据类型之字典
     
    if __name__ == "__main__":
        # 创建字典
        dict1 = {}  # 创建一个空字典
        print("dict1 = ",  dict1)
        dict2 = {"name""霜花似雪""age"25"height"171"address""广东深圳"}
        print("dict2 = ", dict2)
     
        # 使用dict()函数创建字典
        student = [("雪儿"88), ("梦梦"99), ("婷婷"90), ("姗姗"86), ("兰兰"93)]
        stu = dict(student)
        print("stu = ", stu)
     
        user = dict(name="霜花似雪", age=25, height=171, address="广东深圳")
        print("user = ", user)
     
        # 字典的基本操作
        # 访问字典里的值
        product = {"name""华为荣耀20""stock"100"price"3999"address""广东东莞"}
        print("product = ", product)
        print("product['name'] = ", product['name'])
        print("product['price'] = ", product['price'])
        #print("product['color'] = ", product['color'])  # 将会报错,键不存在
     
        # 修改或添加字典元素
        product['name'= "华为荣耀20 Pro"
        product['price'= 4998
        print("product = ", product)
     
        product['color'= ["幻影黑""幻影白""翡翠蓝"]
        product['size'= [(478680), (536754)]
        print("product = ", product)
     
        # 删除字典元素
        del product['address']  # 删除字典的address键值对
        print("product = ", product)
     
        phone = product
        print("phone = ", phone)
        del phone  # 删除整个字典
     
        print("product = ", product)
     
        # 字典健的特性
        mi = {"name""小米C9""price""1899""name""小米CC9""price"2999}
        print("mi = ", mi)
     
        number = {100"10*10""沉鱼落雁""闭月羞花", ("三国""貂蝉"): "美女"}
        print("number = ", number)
     
        # 字典方法
        # len(dict)
        print("len(mi) = "len(mi))
        print("len(number) = "len(number))
     
        # str(dict)
        print("str(mi) = "str(mi))
        print("str(number) = "str(number))
     
        # type(dict)
        print("type(mi) = "type(mi))
        print("type(number) = "type(number))
     
        # 字典格式化
        user = {"name""霜花似雪""age"25"height"171"address""广东深圳""money"123652562.7656256}
        print("name = %(name)s" % user)
        print("age = %(age)d" % user)
        print("money = %(money).4f" % user)

    http://img1.sycdn.imooc.com/5e106912000198f710740505.jpg

    字典函数:

    1. dict.clear():该方法用于删除字典内的所有元素(清空字典),没有返回值(返回值为None)

    2. dict.copy():(复制)该函数用于返回一个具有相同键值对的新字典,是浅复制,因为值本身是相同的,而不是副本。

    3. dict.fromkeys(seq[, value]): 该函数用于创建一个新字典,以序列seq中的元素做字典的键,value为字典所有键对应的初始值。

       参数:dict表示指定字典;seq表示字典键值列表;value表示可选参数,用于设置键序列(seq)的值。

       该方法返回一个列表。

    4. dict.get(key, default=None): 该函数用于获取指定键key的值,如果值不在字典中,就返回默认值。

       参数:dict表示指定字典;key表示字典中要查找的键;default用于指定默认值,当键的值不存在时返回该默认值。

       该方法返回结果为指定键的值,如果值不在字典中,就返回默认值None。

    5. key in dict : in操作用于判断键key是否存在于字典dict中,如果键key在字典中,则返回True,不在字典中,则返回False。

     前进轮胎

    6. dict.items(): 该函数以列表返回可遍历的(键,值)元组数组。

    7. dict.keys(): 该函数以列表返回一个字典的所有键

    8. dict.setdefault(key, default=None): 该函数用于获取与给定键相关联的值,如果字典中不存在键key,就会添加键并将值设置为默认值。

       参数:dict为指定的字典;key表示查找的键;default表示键不存在时设置的默认值。

       该方法没有任何返回值。

    9. dict.update(dict2): (更新或合并)该函数用于把字典dict2中的键值对更新到字典dict中。

       参数:dict表示指定的字典;dict2表示要添加到指定字典dict中的字典。

       该方法没有任何返回值。

    10. dict.values(): 该函数以列表的形式返回字典中的所有值。它与返回键的列表不同,返回的列表中可以包含重复的值。

        返回结果为字典中的所有值。

    11. pop(key[, default]): 该函数用于删除字典给定键key所对应的值,返回值为被删除的值。key值必须给出,否则返回default值。

        参数:key要删除的键值;default如果没有key,返回default值。

    12. popitem(): 该函数用于随机返回被删除字典中的最后一对键和值。如果字典为空,却调用了此方法,就报异常KeyError错误。

        返回一个键值对(key,value)形式,按照后进先出的顺序规则,即最末尾的键值对。

    代码示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    # author : liuhefei
    # Time : 2019/11/30
    # desc:  字典函数
     
    if __name__ == "__main__":
        dict1 = {"name""霜花似雪""age"25"height"171"address""广东深圳"}
        product = {"name""华为荣耀20""stock"100"price"3999"address""广东东莞""color": ["幻影黑""幻影白""翡翠蓝"]}
        number = {100"10*10""沉鱼落雁""闭月羞花", ("三国""貂蝉"): "美女"}
     
        # dict.copy()
        dict2 = dict1.copy()
        print("dict2 = ", dict2)
     
        product1 = product.copy()
        print("product1 = ", product1)
     
        # dict.fromkeys(seq[, value])
        dict3 = {}
        seq = ("北京""上海""广州""深圳")
        city = dict3.fromkeys(seq)
        print("city = %s" % city)
     
        city1 = dict3.fromkeys(seq, 10000)
        print("city1 = %s" % city1)
     
        # dict.get(key, default=None)
        print("dict1.get('name') = ", dict1.get('name'))
        print("dict1.get('weight') = ", dict1.get('weight'))
        print("product.get('color') = ", product.get('color'))
        print("product.get('kg', 0.67) = ", product.get('kg'0.67))
     
        # key in dict
        print("(100 in number) = "100 in number)
        print("('color' in product) = "'color' in product)
        print("('沉鱼落雁' 在字典number中) = %s" % ('沉鱼落雁' in number))
     
        # dict.items()
        print("dict1.items() = ", dict1.items())
        print("product.items() = ", product.items())
        print("number.items() = %s" % number.items())
     
        # dict.keys()
        print("dict1.keys() = ", dict1.keys())
        print("product.keys() = ", product.keys())
        print("number.keys() = %s" % number.keys())
     
        # dict,values()
        print("dict1.values() = ", dict1.values())
        print("product.values() = ", product.values())
        print("number.values() = %s" % number.values())
     
        # dict.setdefault()
        print("dict1.setdefault('name') = ", dict1.setdefault('name'))
        print("dict1.setdefault('name', '豆豆') = ", dict1.setdefault('name''豆豆'))
        print("product.setdefault('send', '顺丰快递') = ", product.setdefault('send'"顺丰快递"))
        print("product = ", product)
     
        # dict.update(dict2)
        girl = {"姗姗""A罩杯""婷婷""B罩杯""梦梦""C罩杯"}
        girl1 = {"雨婷""B罩杯""兰婷""C罩杯""梦婷""B罩杯"}
        girlAll = girl.update(girl1)
        print("girlAll = ", girlAll)
     
        # dict.pop(key[, default)
        print("dict1.pop('height') = ", dict1.pop('height'))
        # 如果要删除的key不存在,一定要指定默认值,否则会报错
        print("dict1.pop('weight', 74) = ", dict1.pop('weight'74))
        print("number.pop(100) = ", number.pop(100))
     
        # dict.popitem()
        print("dict1.popitem() = ", dict1.popitem())
        print("product.popitem() = ", product.popitem())
        print("number.popitem() = ", number.popitem())
     
        # dict.clear()
        print("dict2.clear() = ", dict2.clear())
        print("product1.clear() = ", product1.clear())

    结束语:路是自己选的,后悔的话,也只能往自己的肚子里咽。

  • 相关阅读:
    sql中压缩日志文件和ntextl转化为varchar的处理
    一个生成验证字符或数字的增强类(downmoon)(基于.net1.1)及调用示例
    web程序中获取应用程序系统变量的方法( For.net 1.1)
    ASP.NET 中的正则表达式MSDN(2)
    让sourceSafe每天自动备份及修复(适用于vss6.0和vss2005)
    用SQL语句修改字段的默认值
    关于.net2.0中Webconfig中连接串的加密
    软件工厂简介自MSDN
    获取SqlServer 2000中字段的备注信息
    使用.NET 向浏览器写入二进制文件
  • 原文地址:https://www.cnblogs.com/xyou/p/12162147.html
Copyright © 2020-2023  润新知