- Python 基础
- Python - 首页
- Python - 概述
- Python - 历史
- Python - 特性
- Python vs C++
- Python - Hello World 程序
- Python - 应用领域
- Python - 解释器
- Python - 环境搭建
- Python - 虚拟环境
- Python - 基本语法
- Python - 变量
- Python - 数据类型
- Python - 类型转换
- Python - Unicode 系统
- Python - 字面量
- Python - 运算符
- Python - 算术运算符
- Python - 比较运算符
- Python - 赋值运算符
- Python - 逻辑运算符
- Python - 位运算符
- Python - 成员运算符
- Python - 身份运算符
- Python - 运算符优先级
- Python - 注释
- Python - 用户输入
- Python - 数字
- Python - 布尔值
- Python 控制语句
- Python - 控制流
- Python - 决策
- Python - if 语句
- Python - if else
- Python - 嵌套 if
- Python - match-case 语句
- Python - 循环
- Python - for 循环
- Python - for-else 循环
- Python - while 循环
- Python - break 语句
- Python - continue 语句
- Python - pass 语句
- Python - 嵌套循环
- Python 函数 & 模块
- Python - 函数
- Python - 默认参数
- Python - 关键字参数
- Python - 仅限关键字参数
- Python - 位置参数
- Python - 仅限位置参数
- Python - 可变参数
- Python - 变量作用域
- Python - 函数注解
- Python - 模块
- Python - 内置函数
- Python 字符串
- Python - 字符串
- Python - 字符串切片
- Python - 修改字符串
- Python - 字符串连接
- Python - 字符串格式化
- Python - 转义字符
- Python - 字符串方法
- Python - 字符串练习
- Python 列表
- Python - 列表
- Python - 访问列表元素
- Python - 修改列表元素
- Python - 添加列表元素
- Python - 删除列表元素
- Python - 循环遍历列表
- Python - 列表推导式
- Python - 排序列表
- Python - 复制列表
- Python - 合并列表
- Python - 列表方法
- Python - 列表练习
- Python 元组
- Python - 元组
- Python - 访问元组元素
- Python - 更新元组
- Python - 解包元组
- Python - 循环遍历元组
- Python - 合并元组
- Python - 元组方法
- Python - 元组练习
- Python 集合
- Python - 集合
- Python - 访问集合元素
- Python - 添加集合元素
- Python - 删除集合元素
- Python - 循环遍历集合
- Python - 合并集合
- Python - 复制集合
- Python - 集合运算符
- Python - 集合方法
- Python - 集合练习
- Python 字典
- Python - 字典
- Python - 访问字典元素
- Python - 修改字典元素
- Python - 添加字典元素
- Python - 删除字典元素
- Python - 字典视图对象
- Python - 循环遍历字典
- Python - 复制字典
- Python - 嵌套字典
- Python - 字典方法
- Python - 字典练习
- Python 数组
- Python - 数组
- Python - 访问数组元素
- Python - 添加数组元素
- Python - 删除数组元素
- Python - 循环遍历数组
- Python - 复制数组
- Python - 反转数组
- Python - 排序数组
- Python - 合并数组
- Python - 数组方法
- Python - 数组练习
- Python 文件处理
- Python - 文件处理
- Python - 写入文件
- Python - 读取文件
- Python - 重命名和删除文件
- Python - 目录
- Python - 文件方法
- Python - OS 文件/目录方法
- Python - OS 路径方法
- 面向对象编程
- Python - OOPs 概念
- Python - 类 & 对象
- Python - 类属性
- Python - 类方法
- Python - 静态方法
- Python - 构造函数
- Python - 访问修饰符
- Python - 继承
- Python - 多态
- Python - 方法重写
- Python - 方法重载
- Python - 动态绑定
- Python - 动态类型
- Python - 抽象
- Python - 封装
- Python - 接口
- Python - 包
- Python - 内部类
- Python - 匿名类和对象
- Python - 单例类
- Python - 包装类
- Python - 枚举
- Python - 反射
- Python 错误 & 异常
- Python - 语法错误
- Python - 异常
- Python - try-except 块
- Python - try-finally 块
- Python - 抛出异常
- Python - 异常链
- Python - 嵌套 try 块
- Python - 用户自定义异常
- Python - 日志记录
- Python - 断言
- Python - 内置异常
- Python 多线程
- Python - 多线程
- Python - 线程生命周期
- Python - 创建线程
- Python - 启动线程
- Python - 线程连接
- Python - 线程命名
- Python - 线程调度
- Python - 线程池
- Python - 主线程
- Python - 线程优先级
- Python - 守护线程
- Python - 线程同步
- Python 同步
- Python - 线程间通信
- Python - 线程死锁
- Python - 中断线程
- Python 网络编程
- Python - 网络编程
- Python - 套接字编程
- Python - URL 处理
- Python - 泛型
- Python 库
- NumPy 教程
- Pandas 教程
- SciPy 教程
- Matplotlib 教程
- Django 教程
- OpenCV 教程
- Python 杂项
- Python - 日期 & 时间
- Python - 数学
- Python - 迭代器
- Python - 生成器
- Python - 闭包
- Python - 装饰器
- Python - 递归
- Python - 正则表达式
- Python - PIP
- Python - 数据库访问
- Python - 弱引用
- Python - 序列化
- Python - 模板
- Python - 输出格式化
- Python - 性能测量
- Python - 数据压缩
- Python - CGI 编程
- Python - XML 处理
- Python - GUI 编程
- Python - 命令行参数
- Python - 文档字符串
- Python - JSON
- Python - 发送邮件
- Python - 扩展
- Python - 工具/实用程序
- Python - GUI
- Python 高级概念
- Python - 抽象基类
- Python - 自定义异常
- Python - 高阶函数
- Python - 对象内部
- Python - 内存管理
- Python - 元类
- Python - 使用元类进行元编程
- Python - 模拟和存根
- Python - 猴子补丁
- Python - 信号处理
- Python - 类型提示
- Python - 自动化教程
- Python - Humanize 包
- Python - 上下文管理器
- Python - 协程
- Python - 描述符
- Python - 诊断和修复内存泄漏
- Python - 不可变数据结构
- Python 有用资源
- Python - 问答
- Python - 在线测验
- Python - 快速指南
- Python - 参考
- Python - 速查表
- Python - 项目
- Python - 有用资源
- Python - 讨论
- Python 编译器
- NumPy 编译器
- Matplotlib 编译器
- SciPy 编译器
Python - 字典
Python 中的字典
在 Python 中,字典是一种内置数据类型,用于以键值对的形式存储数据。它是一个无序的、可变的、索引的集合。字典中的每个键都是唯一的,并且映射到一个值。字典通常用于存储相关的数据,例如与特定实体或对象相关的信息,您可以在其中根据其键快速检索值。
Python 的字典是映射类型的示例。映射对象将一个对象的 value 映射到另一个对象。为了在键和值之间建立映射,冒号 (:) 符号放在两者之间。
每个键值对由逗号分隔,并用花括号 {} 括起来。每个对中的键和值由冒号 (:) 分隔,形成 key:value 的结构。
以下是一些 Python 字典对象的示例 -
capitals = {"Maharashtra":"Mumbai", "Gujarat":"Gandhinagar", "Telangana":"Hyderabad", "Karnataka":"Bengaluru"} numbers = {10:"Ten", 20:"Twenty", 30:"Thirty",40:"Forty"} marks = {"Savita":67, "Imtiaz":88, "Laxman":91, "David":49}
字典的关键特性
以下是字典的关键特性 -
无序 - 字典中的元素没有特定的顺序。3.7 版本之前的 Python 字典不维护插入顺序。从 Python 3.7 开始,字典作为语言特性维护插入顺序。
可变 - 在创建字典之后,可以更改、添加或删除项。
索引 - 尽管字典没有数字索引,但它们使用键作为索引来访问关联的值。
唯一键 - 字典中的每个键都必须是唯一的。如果尝试将值分配给现有键,则旧值将被新值替换。
异构 - 字典中的键和值可以是任何数据类型。
示例 1
只有数字、字符串或元组可以用作键。它们都是不可变的。您可以使用任何类型的对象作为值。因此,以下字典定义也有效 -
d1 = {"Fruit":["Mango","Banana"], "Flower":["Rose", "Lotus"]} d2 = {('India, USA'):'Countries', ('New Delhi', 'New York'):'Capitals'} print (d1) print (d2)
它将产生以下输出 -
{'Fruit': ['Mango', 'Banana'], 'Flower': ['Rose', 'Lotus']} {'India, USA': 'Countries', ('New Delhi', 'New York'): 'Capitals'}
示例 2
Python 不接受列表等可变对象作为键,并引发 TypeError。
d1 = {["Mango","Banana"]:"Fruit", "Flower":["Rose", "Lotus"]} print (d1)
它将引发 TypeError -
Traceback (most recent call last): File "C:\Users\Sairam\PycharmProjects\pythonProject\main.py", line 8, in <module> d1 = {["Mango","Banana"]:"Fruit", "Flower":["Rose", "Lotus"]} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: unhashable type: 'list'
示例 3
您可以将值分配给字典中的多个键,但一个键不能在字典中出现多次。
d1 = {"Banana":"Fruit", "Rose":"Flower", "Lotus":"Flower", "Mango":"Fruit"} d2 = {"Fruit":"Banana","Flower":"Rose", "Fruit":"Mango", "Flower":"Lotus"} print (d1) print (d2)
它将产生以下输出 -
{'Banana': 'Fruit', 'Rose': 'Flower', 'Lotus': 'Flower', 'Mango': 'Fruit'} {'Fruit': 'Mango', 'Flower': 'Lotus'}
创建字典
在 Python 中,您可以通过在花括号 {} 内放置用逗号分隔的键值对序列来创建字典,其中用冒号 : 分隔每个键及其关联的值。或者,您可以使用 dict() 函数。
示例
以下示例演示了如何使用花括号和 dict() 函数创建名为“student_info”的字典 -
# Creating a dictionary using curly braces sports_player = { "Name": "Sachin Tendulkar", "Age": 48, "Sport": "Cricket" } print ("Dictionary using curly braces:", sports_player) # Creating a dictionary using the dict() function student_info = dict(name="Alice", age=21, major="Computer Science") print("Dictionary using dict():",student_info)
产生的结果如下所示 -
Dictionary using curly braces: {'Name': 'Sachin Tendulkar', 'Age': 48, 'Sport': 'Cricket'} Dictionary using dict(): {'name': 'Alice', 'age': 21, 'major': 'Computer Science'}
访问字典项
您可以使用方括号 [] 或 get() 方法访问与特定键关联的值 -
student_info = { "name": "Alice", "age": 21, "major": "Computer Science" } # Accessing values using square brackets name = student_info["name"] print("Name:",name) # Accessing values using the get() method age = student_info.get("age") print("Age:",age)
获得的结果如下 -
Name: Alice Age: 21
修改字典项
您可以修改与特定键关联的值或添加新的键值对 -student_info = { "name": "Alice", "age": 21, "major": "Computer Science" } # Modifying an existing key-value pair student_info["age"] = 22 # Adding a new key-value pair student_info["graduation_year"] = 2023 print("The modified dictionary is:",student_info)
以上代码的输出如下 -
The modified dictionary is: {'name': 'Alice', 'age': 22, 'major': 'Computer Science', 'graduation_year': 2023}
删除字典项
您可以使用 del 语句、pop() 方法或 popitem() 方法删除项 -
student_info = { "name": "Alice", "age": 22, "major": "Computer Science", "graduation_year": 2023 } # Removing an item using the del statement del student_info["major"] # Removing an item using the pop() method graduation_year = student_info.pop("graduation_year") print(student_info)
以下是以上代码的输出 -
{'name': 'Alice', 'age': 22}
遍历字典
您可以使用循环遍历字典中的键、值或键值对 -
student_info = { "name": "Alice", "age": 22, "major": "Computer Science", "graduation_year": 2023 } # Iterating through keys for key in student_info: print("Keys:",key, student_info[key]) # Iterating through values for value in student_info.values(): print("Values:",value) # Iterating through key-value pairs for key, value in student_info.items(): print("Key:Value:",key, value)
执行以上代码后,我们将获得以下输出 -
Keys: name Alice Keys: age 22 Keys: major Computer Science Keys: graduation_year 2023 Values: Alice Values: 22 Values: Computer Science Values: 2023 Key:Value: name Alice Key:Value: age 22 Key:Value: major Computer Science Key:Value: graduation_year 2023
字典键的属性
字典值没有任何限制。它们可以是任何任意 Python 对象,无论是标准对象还是用户定义的对象。但是,键的情况并非如此。
关于字典键,有两点需要注意 -
- 每个键只能有一个条目。这意味着不允许重复键。当在赋值过程中遇到重复键时,最后一次赋值将生效。例如 -
dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'} print ("dict['Name']: ", dict['Name'])
执行以上代码时,会产生以下结果 -
dict['Name']: Manni
dict = {['Name']: 'Zara', 'Age': 7} print ("dict['Name']: ", dict['Name'])
执行以上代码时,会产生以下结果 -
Traceback (most recent call last): File "test.py", line 3, in <module> dict = {['Name']: 'Zara', 'Age': 7}; TypeError: unhashable type: 'list'
Python 字典运算符
在 Python 中,定义了以下运算符用于字典操作数。在示例中,使用了以下字典对象。
d1 = {'a': 2, 'b': 4, 'c': 30} d2 = {'a1': 20, 'b1': 40, 'c1': 60}
运算符 | 描述 | 示例 |
---|---|---|
dict[key] | 提取/分配与键映射的值 | print (d1['b']) 检索 4 d1['b'] = 'Z' 将新值分配给键 'b' |
dict1|dict2 | 两个字典对象的并集,返回新对象 | d3=d1|d2 ; print (d3) {'a': 2, 'b': 4, 'c': 30, 'a1': 20, 'b1': 40, 'c1': 60} |
dict1|=dict2 | 增强的字典并集运算符 | d1|=d2; print (d1) {'a': 2, 'b': 4, 'c': 30, 'a1': 20, 'b1': 40, 'c1': 60} |
Python 字典方法
Python 包含以下字典方法 -
序号 | 方法及描述 |
---|---|
1 | dict.clear()
删除字典 dict 的所有元素 |
2 | dict.copy()
返回字典 dict 的浅拷贝 |
3 | dict.fromkeys()
创建一个新的字典,其键来自 seq,值设置为 value。 |
4 | dict.get(key, default=None)
对于key 键,返回 value 或 default(如果键不在字典中) |
5 | dict.has_key(key)
如果键在字典 dict 中,则返回 true,否则返回 false |
6 | dict.items()
返回 dict 的 (键,值) 元组对列表 |
7 | dict.keys()
返回字典 dict 的键列表 |
8 | dict.setdefault(key, default=None)
类似于 get(),但如果key 不在 dict 中,则会设置 dict[key]=default |
9 | dict.update(dict2)
将字典 dict2 的键值对添加到 dict |
10 | dict.values()
返回字典 dict 的值列表 |
与字典一起使用的内置函数
以下是我们可以与字典一起使用的内置函数 -
序号 | 函数及描述 |
---|---|
1 | cmp(dict1, dict2)
比较两个 dict 的元素。 |
2 | len(dict)
给出字典的总长度。这将等于字典中项目的数量。 |
3 | str(dict)
生成字典的可打印字符串表示形式 |
4 | type(variable)
返回传递变量的类型。如果传递的变量是字典,则它将返回字典类型。 |