当前位置: 首页 > article >正文

【Python】什么是字典(Dictionary)?

什么是字典(Dictionary)?

字典(Dictionary)是 Python 中一种 可变(mutable)的数据结构,用于存储键值对(key-value pairs)。字典通过 (key)来快速查找 (value)。与列表或元组不同,字典是通过键来访问值,而不是通过索引。

字典在很多编程语言中都有类似的数据结构(比如哈希表、关联数组等)。

字典的特点:

  • 无序:字典中的元素是无序的(直到 Python 3.7,字典元素是按插入顺序存储的,但这不是字典的核心特性)。你不能像列表一样通过索引访问字典中的元素。
  • 键值对:字典中的每个元素是一个键值对,即每个键对应一个值。
  • 唯一键:字典中的键是唯一的,不能重复。如果使用相同的键赋值,原有的值会被新值覆盖。
  • 可变:字典是可变的,可以添加、删除或更新键值对。

创建字典

字典可以通过花括号 {} 来创建,键和值之间用冒号 : 分隔,多个键值对之间用逗号 , 分隔。

示例:
# 创建一个字典
my_dict = {"name": "Alice", "age": 25, "city": "New York"}

# 创建一个空字典
empty_dict = {}

# 创建一个包含不同数据类型的字典
person = {"name": "Bob", "age": 30, "is_student": False, "courses": ["Math", "Science"]}

访问字典的元素

可以通过字典的 来访问对应的值。

my_dict = {"name": "Alice", "age": 25, "city": "New York"}

# 通过键访问值
print(my_dict["name"])  # 输出 Alice
print(my_dict["age"])   # 输出 25

常见的字典操作

添加/更新键值对: 如果键已存在,值会被更新;如果键不存在,则会添加新的键值对

my_dict = {"name": "Alice", "age": 25}

# 添加新的键值对
my_dict["city"] = "New York"

# 更新已有的键值对
my_dict["age"] = 26

print(my_dict)  # 输出 {'name': 'Alice', 'age': 26, 'city': 'New York'}

删除键值对: 使用 del 关键字或 pop() 方法删除键值对。

my_dict = {"name": "Alice", "age": 25, "city": "New York"}

# 使用 del 删除键值对
del my_dict["city"]

# 使用 pop() 删除键值对
age = my_dict.pop("age")  # 删除并返回键 "age" 对应的值

print(my_dict)  # 输出 {'name': 'Alice'}
print(age)      # 输出 25

查看所有的键、值和键值对

my_dict = {"name": "Alice", "age": 25, "city": "New York"}

print(my_dict.keys())    # 输出 dict_keys(['name', 'age', 'city'])
print(my_dict.values())  # 输出 dict_values(['Alice', 25, 'New York'])
print(my_dict.items())   # 输出 dict_items([('name', 'Alice'), ('age', 25), ('city', 'New York')])
  • keys():返回字典中所有的键。
  • values():返回字典中所有的值。
  • items():返回字典中所有的键值对。

字典的查找操作

my_dict = {"name": "Alice", "age": 25}

# 使用 get() 方法查找键值对
print(my_dict.get("name"))      # 输出 Alice
print(my_dict.get("city", "Unknown"))  # 输出 Unknown(因为 "city" 不在字典中)
  • get():通过键查找对应的值。如果键不存在,可以设置一个默认值。

字典的清空: 使用 clear() 方法可以清空字典中的所有元素。

my_dict = {"name": "Alice", "age": 25}
my_dict.clear()
print(my_dict)  # 输出 {}

字典的长度: 使用 len() 函数获取字典中的键值对个数。

my_dict = {"name": "Alice", "age": 25}
print(len(my_dict))  # 输出 2

字典的应用场景

  • 存储和查找:字典常用于需要通过唯一标识符(键)快速查找值的场景,例如通过学生 ID 查找学生信息,或者存储配置信息。
  • 数据映射:字典非常适合存储映射关系,比如把国家名称映射到其首都,或把用户名映射到用户的个人资料。
  • JSON 数据:字典的结构与 JSON 格式非常相似,Python 中的字典通常用于表示从 JSON 格式转换来的数据。

字典的优缺点

优点:
  • 查找速度快:字典使用哈希表实现,查询操作通常具有常数时间复杂度 O(1),比列表等其他数据结构要高效。
  • 灵活性高:字典的键可以是任何不可变类型(如字符串、数字、元组),而值可以是任意类型的数据。
缺点:
  • 无序:字典中的元素是无序的,虽然 Python 3.7+ 中保持了插入顺序,但不能像列表一样按顺序访问元素。
  • 占用内存较大:字典相比列表会占用更多的内存,因为它需要维护哈希表。

总结:

字典是一个非常强大且灵活的数据结构,它以 键值对 的形式存储数据,通过 来访问对应的 。在需要通过唯一标识符快速查找数据的场景中,字典是非常合适的选择。


http://www.kler.cn/a/458050.html

相关文章:

  • 07-ArcGIS For JavaScript--隐藏参数qualitySettings(memory和lod控制)
  • 【面试】后端开发面试中常见数据结构及应用场景、原理总结
  • 单元测试3.0+ @RunWith(JMockit.class)+mock+injectable+Expectations
  • 关于IDE的相关知识之三【插件安装、配置及推荐的意义】
  • MinGW 和 MinGW-w64 的介绍与配置
  • aardio —— 虚表 —— 模拟属性框
  • springboot489基于springboot的七彩云南文化旅游网站的设计与实现(论文+源码)_kaic
  • 玉米中的元基因调控网络突出了功能上相关的调控相互作用\mo.20a3.R
  • PyTorch中提升模型训练速度的17种策略
  • uni-app开发-识图小程序-个人中心页面
  • Windows远程连接桌面报错“由于没有远程桌面授权服务器可以提供许可证,远程会话连接已断开。请跟服务器管理员联系
  • ELK入门教程(超详细)
  • 【算法】复杂性理论初步
  • Wordpress Tutor LMS插件存在SQL注入漏洞(CVE-2024-10400)
  • 【机器学习】SVM支持向量机(二)
  • mysql建立主从集群
  • 38. 日志
  • MySQL root用户密码忘记怎么办(Reset root account password)
  • 爬虫案例-爬取网页图片
  • 基于STM32的智能垃圾桶的Proteus仿真
  • 使用 pushy 热更新后 sentry 不能正常显示源码
  • 玉米中的元基因调控网络突出了功能上相关的调控相互作用。/biosample_parser.py
  • 秒鲨后端之MyBatis【2】默认的类型别名、MyBatis的增删改查、idea中设置文件的配置模板、MyBatis获取参数值的两种方式、特殊SQL的执行
  • py打包工具
  • Python + 深度学习从 0 到 1(02 / 99)
  • 基于深度学习(HyperLPR3框架)的中文车牌识别系统-Qt调用Python