• python基础专栏12-python基础篇-复合数据类型-字典


    前言

    曾经在儿时小学阶段学习语文时,字典在学习过程中起到了非常的作用,也就是在那时候,我们学会了字典的使用方法,通过拼音或部首,找到汉字所在的页码,通过页码就可以找到汉字的释义。

    在python当中,字典是一类非常重要的复合数据类型,它的数据元素格式和之前学习的列表、元组和集合不同,字典中的元素是由两部分组成:键(key):值(value)对。字典是一种映射类型的数据结构。

    字典中的数据是按照键(key)进行索引存储和获取的。

    字典概念定义

    字典是一个无序、可变和有索引的复合数据结构体,里面可以存放任何数据类型的数据。

    字典中的数据元素格式为:key:value,键和值之间用冒号连接,数据元素之间是通过逗号分隔,和列表、元组和集合一样。

    字典的创建

    方式一:直接用界定符赋值的方式创建

    1. dict1={"name":"张三","age":20,"sex":"男","address":"济宁"}
    2. print("dict1的数据类型:",type(dict1))
    3. print("dict1的值为:",dict1)
    4. '''
    5. ************执行结果*****************
    6. dict1的数据类型:
    7. dict1的值为: {'name': '张三', 'age': 20, 'sex': '男', 'address': '济宁'}
    8. '''

    方式二:通过dict函数创建。

    通过此函数生成时,需要按照关键字参数(后续会在函数章节进行详细讲解什么是关键字传参)的方式进行传参。

    1. dict1=dict(name="张三",age=21,sex="男",address="济宁")
    2. print("dict1的数据类型:",type(dict1))
    3. print("dict1的值为:",dict1)
    4. '''
    5. *****************执行结果******************
    6. dict1的数据类型:
    7. dict1的值为: {'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁'}
    8. '''

    字典的特点

    1、字典的元素的值可以是任何类型,但是键只能是不可变类型的数据,比如数值、字符串、元组类型。

    2、字典中键具有唯一性,不能重复。

    3、字典是通过键获取值。

    字典支持的方法

    len(dict1)

    此方法返回字典中元素的个数。

    1. dict2=dict(name="张三",age=21,sex="男",address="济宁")
    2. print(len(dict2))
    3. '''
    4. ****************结果输出******************
    5. 4
    6. '''

    str(dict1)

    此方法返回字典的字符串表示。

    1. dict2=dict(name="张三",age=21,sex="男",address="济宁")
    2. print(str(dict2))
    3. '''
    4. *******************结果输出*****************
    5. {'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁'}
    6. '''

    字典上的操作

    字典同样是用来进行存储数据的容器,并且是可变类型,所以它支持增删改查的操作。

    添加数据

    方式①:

    按键赋值,添加新元素(键不存在的情况)。

    如果键存在的话,则是更新数据。

    1. dict1=dict(name="张三",age=21,sex="男",address="济宁")
    2. print("初始值:",dict1)
    3. dict1["major"]="计算机科学与技术"
    4. print("添加数据后:",dict1)
    5. '''
    6. ****************执行结果***********************
    7. 初始值: {'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁'}
    8. 添加数据后: {'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁', 'major': '计算机科学与技术'}
    9. '''

    方式②

    update()方法,通过关键字参数,关键字在字典中不存在的话,则是增加数据,否则是修改数据。

    1. dict1=dict(name="张三",age=21,sex="男",address="济宁")
    2. print("初始值:",dict1)
    3. dict1.update(hobby="跑步")
    4. print("添加数据后:",dict1)
    5. '''
    6. ********************执行结果********************
    7. 初始值: {'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁'}
    8. 添加数据后: {'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁', 'hobby': '跑步'}
    9. '''

    删除数据

    方式①

    通过del语句进行删除,如果键不存在,则抛出异常。

    1. dict1=dict(name="张三",age=21,sex="男",address="济宁")
    2. print("初始值:",dict1)
    3. del dict1['name']
    4. print("删除数据后:",dict1)
    5. '''
    6. ********************执行结果***************************
    7. 初始值: {'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁'}
    8. 删除数据后: {'age': 21, 'sex': '男', 'address': '济宁'}
    9. '''
    10. dict1=dict(name="张三",age=21,sex="男",address="济宁")
    11. print("初始值:",dict1)
    12. del dict1['name1']
    13. print("删除数据后:",dict1)
    14. '''
    15. ****************执行结果********************
    16. 初始值: {'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁'}
    17. Traceback (most recent call last):
    18. File "E:\python\2.0 办公自动化\chapter2\Demo1.py", line 3, in
    19. del dict1['name1']
    20. KeyError: 'name1'
    21. '''

    方式②

    pop()方法

    通过此方法也可以删除字典当中的数据元素,如果键不存在,则抛出异常。

    1. dict1=dict(name="张三",age=21,sex="男",address="济宁")
    2. print("初始值:",dict1)
    3. dict1.pop('name')
    4. print("pop方法删除数据后:",dict1)
    5. '''
    6. ***************执行结果****************
    7. 初始值: {'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁'}
    8. pop方法删除数据后: {'age': 21, 'sex': '男', 'address': '济宁'}
    9. '''
    10. dict1=dict(name="张三",age=21,sex="男",address="济宁")
    11. print("初始值:",dict1)
    12. dict1.pop('name1') #删除不存在的key
    13. '''
    14. *****************执行结果**************************
    15. 初始值: {'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁'}
    16. Traceback (most recent call last):
    17. File "E:\python\2.0 办公自动化\chapter2\Demo1.py", line 3, in
    18. dict1.pop('name1') #删除不存在的key
    19. KeyError: 'name1'
    20. '''

    修改数据

    修改数据就是把现有的键(key)对应的值改变,即指向新的数据。

    方式①:

    直接重新赋值修改键对应的值。

    1. dict1=dict(name="张三",age=21,sex="男",address="济宁")
    2. print("初始值:",dict1)
    3. dict1['name']="李四"
    4. print("修改后的字典值:",dict1)
    5. '''
    6. *******************执行结果**********************
    7. 初始值: {'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁'}
    8. 修改后的字典值: {'name': '李四', 'age': 21, 'sex': '男', 'address': '济宁'}
    9. '''

    方式②:

    update()方法,通过调用update方法,关键字参数的方式修改字典的值。

    1. dict1=dict(name="张三",age=21,sex="男",address="济宁")
    2. print("初始值:",dict1)
    3. dict1.update(name="李四")
    4. print("修改后的字典值:",dict1)
    5. '''
    6. *******************执行结果*************************
    7. 初始值: {'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁'}
    8. 修改后的字典值: {'name': '李四', 'age': 21, 'sex': '男', 'address': '济宁'}
    9. '''

    查看数据

    字典获取数据的方式是通过键获取值。

    有两种操作方式。

    方式①:按键取值,键存在,返回对应的值,键不存在,抛出异常。

    语法格式:value=dict1["key1"]

    1. dict1=dict(name="张三",age=21,sex="男",address="济宁")
    2. value=dict1['name']
    3. print("键name对应的值:",value)
    4. '''
    5. *******************执行结果****************
    6. 键name对应的值: 张三
    7. '''
    8. dict1=dict(name="张三",age=21,sex="男",address="济宁")
    9. value=dict1['name1']
    10. print("键name对应的值:",value)
    11. '''
    12. ***************执行结果*************************
    13. Traceback (most recent call last):
    14. File "E:\python\2.0 办公自动化\chapter2\Demo1.py", line 2, in
    15. value=dict1['name1']
    16. KeyError: 'name1'
    17. '''

    方式②

    dict1.get('key1')

    通过get方法也可以获取键对应的值,键存在时,返回对应的值,不存在时,返回默认的值为None,也可以传入默认值。

    1. dict1=dict(name="张三",age=21,sex="男",address="济宁")
    2. value=dict1.get("name")
    3. print("键name对应的值:",value)
    4. '''
    5. *****************执行结果****************
    6. 键name对应的值: 张三
    7. '''
    8. dict1=dict(name="张三",age=21,sex="男",address="济宁")
    9. value=dict1.get("name1")
    10. print("键不存在时的默认值None:",value)
    11. value2=dict1.get("name1","李四")
    12. print("键不存在时的默认值:",value2)
    13. '''
    14. ***************执行结果*******************
    15. 键不存在时的默认值None: None
    16. 键不存在时的默认值: 李四
    17. '''

    字典的遍历

    dict1.keys()

    返回字典的所有键,数据类型为列表类型。

    dict1.values()

    返回字典的所有值,数据类型为列表类型。

    dict1.items()

    返回字典的所有数据项,数据类型为列表类型,列表中的数据格式为元组,每个元组里面是字典单个数据元素的键和值。

    1. dict1=dict(name="张三",age=21,sex="男",address="济宁")
    2. keys=dict1.keys()
    3. print("键的类型:",type(keys))
    4. print("字典键为:",keys)
    5. values=dict1.values()
    6. print("值的类型:",type(values))
    7. print("字典值为:",values)
    8. items=dict1.items()
    9. print("项的类型:",type(items))
    10. print("字典项为:",items)
    11. '''
    12. ********************执行结果********************
    13. 键的类型:
    14. 字典键为: dict_keys(['name', 'age', 'sex', 'address'])
    15. 值的类型:
    16. 字典值为: dict_values(['张三', 21, '男', '济宁'])
    17. 项的类型:
    18. 字典项为: dict_items([('name', '张三'), ('age', 21), ('sex', '男'), ('address', '济宁')])
    19. '''

    字典的特殊用法

    可以用zip方法,把两个相等大小的列表转换成字典。

    1. list1=['a','b','c','d']
    2. list2=[1,2,3,4]
    3. dict1=dict(zip(list1,list2))
    4. print(dict1)
    5. print(type(dict1))
    6. '''
    7. *******************执行结果*************************
    8. {'a': 1, 'b': 2, 'c': 3, 'd': 4}
    9. '''

    以上就是字典相关的知识,希望对您有所帮助。

    ------------------------------------------------------------

    您的支持和关注是作者持续创作的动力源泉。

  • 相关阅读:
    小程序性能优化
    iOS中的UIScene和UISceneDelegate
    设计模式之【装饰器模式】
    【剧前爆米花--爪哇岛寻宝】面向对象的三大特性——封装、继承以及多态的详细剖析(上——继承)。
    Chrome 实用的开发功能
    浅谈ClickHouse安全性和权限管理
    Oracle RMAN 口令加密测试
    【重识云原生】第六章容器6.1.5节——Docker核心技术Namespace
    地震勘探——相关概念(一)
    实时跟踪企业订单执行情况,采购系统助力汽车服务企业缩短采购订单周期
  • 原文地址:https://blog.csdn.net/xuxin555/article/details/126629946