百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python基础:无处不在的字典!叫你一声,敢答应吗?

off999 2024-09-16 00:46 34 浏览 0 评论

在Python的世界里,字典是一种无处不在的数据结构,以其独特的方式处理信息和数据。想象一下,如果你拥有一个万能的箱子,能够按照名字立刻找到里面的任何一个物品,那么Python字典就是编程世界中的这个万能箱子。无论是快速访问数据、数据存储还是进行复杂的数据操作,字典都能以其高效和灵活的特性,成为Python编程不可或缺的一部分。

合集:《Python基础》
分类:数据类型
(关注并收藏,API快查,一文全覆盖,随时补充更新)

接下来,我将给大家介绍:

  • Python字典的特点
  • 完整的方法列表
  • 常见的操作示例
  • 字典的创建和初始化
  • 访问元素
  • 添加和修改元素
  • 删除元素
  • 遍历字典
  • 字典推导式
  • 嵌套字典
  • 字典的方法
  • 字典的性能

0.Python字典的特点

  • 键值对存储结构:Python字典通过键值对存储数据,每个键对应一个值。键必须是不可变类型,比如数字、字符串或元组,而值则可以是任意的数据类型。
  • 可变性:字典是可变的,这意味着你可以随时添加、删除或者修改字典中的键值对。
  • 无序性:在Python 3.7之前,字典是无序的。这意味着,字典中的数据项是无序排列的,你每次遍历字典时,键值对的排列顺序可能都不同。从Python 3.7开始,字典被设计为按照插入的顺序排序。
  • 动态性:字典可以在运行时动态地增减,这让字典成为了处理动态数据的强大工具。

1.完整的方法列表

2.常见的操作示例

字典的创建和初始化

# 使用大括号创建空字典
empty_dict = {}

# 使用dict()函数创建空字典
empty_dict = dict()

# 直接使用键值对初始化字典,键和值之间用冒号分隔
person = {"name": "张三", "age": 30, "city": "北京"}

# 使用关键字参数初始化字典
person = dict(name="张三", age=30, city="北京")

# 通过元组列表初始化字典
person_via_tuples = dict([("name", "张三"), ("age", 30), ("city", "北京")])

访问元素

# 使用键直接访问,如果键不存在,会抛出KeyError异常
name = person["name"]

# 使用get方法安全访问,如果键不存在,会返回默认值None(可修改为其他值)
name = person.get("name")  # 如果键name不存在,返回None
name = person.get("name", default="nobody")  # 如果键name不存在,返回nobody

# 使用setdefault方法安全访问,如果键不存在,会返回默认值None(可修改为其他值),同时添加默认值到字典中
name = person.setdefault("name")
name = person.setdefault("name", default="nobody")

# 返回字典所有键的视图,可遍历或转换为其他容器类型如列表
person.keys()
list(person.keys())  # ["name", "age", "city"]

# 返回字典所有值的视图,可遍历或转换为其他容器类型如列表
person.values()
list(person.values())  # ["张三", 30, "北京"]

# 返回字典所有键值对的视图,可遍历或转换为其他容器类型如列表
person.items()
list(person.items())  # [("name", "张三"), ("age", 30), ("city", "北京")]

添加和修改元素

# 使用赋值语句添加或修改,键不存在时添加,键存在时修改
person["gender"] = "男"
person["age"] = 31

# 使用update方法添加或修改,键不存在时添加,键存在时修改
person.update({"gender": "男", "age": 31})

删除元素

# 使用del直接删除元素,没有返回
del person["age"]

# 使用pop方法
age = person.pop("age")  # 默认如果键不存在或抛出异常
age = person.pop("age", None)  # 可选设置键不存在时返回默认值,如此处的None

遍历字典

# 遍历字典,默认就是遍历键
for key in person:
    print(key)

# 遍历键
for key in person.keys():
    print(key)

# 遍历值
for value in person.values():
    print(value)

# 遍历键值对
for key, value in person.items():
    print(f"{key}: {value}")

字典推导式

一种从其他迭代器创建字典的简洁且高效的方法,借鉴了列表推导式的语法。键值对可以是任意表达式,通常是对已有的字典或任何可迭代对象进行操作和处理的结果。

# 将原字典的键和值互换
inverted_person = {value: key for key, value in person.items()}

嵌套字典

# 创建嵌套字典
employees = {
    '张三': {
        '职位': '项目经理',
        '年龄': 30
    },
    '李四': {
        '职位': '开发工程师',
        '年龄': 25
    }
}

# 访问嵌套字典
employees['张三']['职位']  # 项目经理

3.字典的性能

  • 性能本来就高!:字典在Python中是通过哈希表实现的,这意味着在理想条件下,无论字典中有多少项,查找、插入和删除操作的时间复杂度都是O(1)。这使得字典成为存储和访问数据的极其高效的结构。
  • 还想进一步提高?
  • 尽量在创建字典时就确定好其结构和大小,避免频繁地添加或删除键值对,以减少内存的重新分配。
  • 当键是简单的数据类型时,如字符串或数字,字典的性能最优。
  • 利用字典方法,如get()和setdefault(),可以避免不必要的键查找和错误处理,从而提高代码的效率。

4.结语

掌握Python字典的操作不仅能帮助你高效地管理和操作数据,还能使你的代码更加简洁和优雅。

欢迎点赞收藏评论加关注,每天学习一点Python小知识,无论基础、模块、数据分析、深度学习和Ai,总有你感兴趣的。我是钢铁老豆,一个30岁转行IT、自学成为算法工程师、想用Ai点亮孩子小小世界的Pythoner。

相关推荐

Python Flask 容器化应用链路可观测

简介Flask是一个基于Python的轻量级Web应用框架,因其简洁灵活而被称为“微框架”。它提供了Web开发所需的核心功能,如请求处理、路由管理等,但不会强制开发者使用特定的工具或库。...

Python GUI应用开发快速入门(python开发软件教程)

一、GUI开发基础1.主流GUI框架对比表1PythonGUI框架比较框架特点适用场景学习曲线Tkinter内置库,简单小型应用,快速原型平缓PyQt功能强大,商用许可专业级桌面应用陡峭PySi...

【MCP实战】Python构建MCP应用全攻略:从入门到实战!

实战揭秘:Python Toga 打造跨平台 GUI 应用的神奇之旅

在Python的世界里,GUI(图形用户界面)开发工具众多,但要找到一款真正跨平台、易于使用且功能强大的工具并不容易。今天,我们就来深入探讨一下Toga——一款Python原生、操作系统原...

python应用目录规划(python的目录)

Python大型应用目录结构规划(企业级最佳实践)核心原则模块化:按业务功能拆分,高内聚低耦合可扩展性:支持插件机制和动态加载环境隔离:清晰区分开发/测试/生产环境自动化:内置标准化的构建测试部署流...

Python图形化应用开发框架:PyQt开发简介

PyQt概述定义:PyQt是Python绑定Qt框架的工具集,用于开发跨平台GUI应用程序原理:通过Qt的C++库提供底层功能,PyQt使用SIP工具生成Python绑定特点:支持Windows/ma...

[python] 基于PyOD库实现数据异常检测

PyOD是一个全面且易于使用的Python库,专门用于检测多变量数据中的异常点或离群点。异常点是指那些与大多数数据点显著不同的数据,它们可能表示错误、噪声或潜在的有趣现象。无论是处理小规模项目还是大型...

Python、Selenium 和 Allure 进行 UI 自动化测试的简单示例脚本

环境准备确保你已经安装了以下库:SeleniumAllurepytest你可以使用以下命令安装所需库:pipinstallseleniumallure-pytestpytest示例代码下面的代...

LabVIEW 与 Python 融合:打造强大测试系统的利器

在现代测试系统开发领域,LabVIEW和Python各自凭借独特优势占据重要地位。LabVIEW以图形化编程、仪器控制和实时系统开发能力见长;Python则凭借丰富的库资源、简洁语法和强大数...

软件测试进阶之自动化测试——python+appium实例

扼要:1、了解python+appium进行APP的自动化测试实例;2、能根据实例进行实训操作;本课程主要讲述用python+appium对APP进行UI自动化测试的例子。appium支持Androi...

Python openpyxl:读写样式Excel一条龙,测试报表必备!

无论你是测试工程师、数据分析师,还是想批量导出Excel的自动化工作者,只需一个库openpyxl,即可高效搞定Excel的各种需求!为什么选择openpyxl?支持.xlsx格式...

Python + Pytest 测试框架——数据驱动

引言前面已经和大家介绍过Unittest测试框架的数据驱动框架DDT,以及其实现原理。今天和大家分享的是Pytest测试框架的数据驱动,Pytest测试框架的数据驱动是由pytest自...

这款开源测试神器,圆了我玩游戏不用动手的梦想

作者:HelloGitHub-Anthony一天我在公司用手机看游戏直播,同事问我在玩什么游戏?我和他说在看直播,他恍然大悟:原来如此,我还纳闷你玩游戏,咋不用动手呢。。。。一语惊醒梦中人:玩游戏不用...

Python单元测试框架对比(pycharm 单元测试)

一、核心框架对比特性unittest(标准库)pytest(主流第三方)nose2(unittest扩展)doctest(文档测试)安装Python标准库pipinstallpytestp...

利用机器学习,进行人体33个2D姿态检测与评估

前几期的文章,我们分享了人脸468点检测与人手28点检测的代码实现过程,本期我们进行人体姿态的检测与评估通过视频进行人体姿势估计在各种应用中起着至关重要的作用,例如量化体育锻炼,手语识别和全身手势控制...

取消回复欢迎 发表评论: