Python 100天,从新手到大师——常用数据结构之字典:键值对的灵活容器(day13)
常用数据结构之字典:键值对的灵活容器学习概述在学习了列表、元组和集合之后,今天我们将迎来Python中最强大、最灵活的数据结构之一——字典(Dictionary)。字典以键值对(Key-Value Pair)的形式存储数据,它不仅能高效地存储信息,还能让我们通过有意义的键名快速访问和操作数据。无论是存储用户信息、配置参数,还是进行数据统计和转换,字典都是Python程序员不可或缺的工具。本节课,我们将深入探索字典的特性、创建方式、操作方法以及实际应用,让你能够熟练运用这一强大的数据结构。字典:Python中的映射神器一、 为什么需要字典?想象一下,我们需要存储一个人的完整信息:姓名、年龄、身高、体重、地址、电话号码等。如果我们使用列表或元组来存储:person=['王大锤',55,168,60,'成都市武侯区科华北路62号1栋101','13122334455']这种方式存在明显的问题:我们很难记住哪个索引对应哪个信息(person[2]是身高还是体重?)当信息顺序发生变化时,代码就会出错缺少信息的描述性标签集合更是不可行,因为它会自动去重,如果年龄和体重恰好相同,就会丢失信息。这就是字典的用武之地!字典通过键值对的方式组织数据,每个键都像是一个有意义的标签,让我们可以直观地访问对应的值:person={'name':'王大锤','age':55,'height':168,'weight':60,'address':'成都市武侯区科华北路62号1栋101','phone':'13122334455'}现在,要获取身高,我们只需使用person['height'],代码的含义一目了然。二、 字典的基本概念字典(Dictionary)是Python中的一种映射类型(Mapping Type),它包含一系列的键值对。每个键值对包含:键(Key):必须是不可变类型(如字符串、数字、元组)值(Value):可以是任意Python对象字典的特点:无序性:Python 3.7+中字典保持了插入顺序,但本质上是无序的数据结构键的唯一性:每个键在字典中必须是唯一的,如果重复,后面的值会覆盖前面的值可变性:字典创建后可以添加、删除、修改键值对三、 创建字典Python提供了多种创建字典的方式:1. 使用花括号{}创建# 创建一个空字典empty_dict={}print(empty_dict)# 输出:{}# 创建包含键值对的字典student={'name':'张三','age':20,'major':'计算机科学','gpa':3.8}print(student)# 输出:{'name': '张三', 'age': 20, 'major': '计算机科学', 'gpa': 3.8}# 键可以是不同类型的(但通常是字符串)mixed_keys={'name':'李四',1:'one',(1,2):'tuple_key',3.14:'pi'}print(mixed_keys)2. 使用dict()函数创建# 从关键字参数创建person=dict(name='王五',age=25,city='北京')print(person)# 输出:{'name': '王五', 'age': 25, 'city': '北京'}# 从二元组列表创建items=[('name','赵六'),('age',30),('city','上海')]person2=dict(items)print(person2)# 输出:{'name': '赵六', 'age': 30, 'city': '上海'}# 使用zip函数合并两个列表keys=['name','age','city']values=['孙七',35,'广州']person3=dict(zip(keys,values))print(person3)# 输出:{'name': '孙七', 'age': 35, 'city': '广州'}3. 使用字典推导式创建# 创建一个数字及其平方的字典squares={x:x**2forxinrange(1,6)}print(squares)# 输出:{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}# 从现有字典创建新字典(筛选、转换)original={'a':1,'b':2,'c':3,'d':4}doubled={k:v*2fork,vinoriginal.items()ifv