网易首页 > 网易号 > 正文 申请入驻

Python 编程B15:组合数据类型(三)

0
分享至

9.5 字典类型

(dict)是 Python 中最重要的数据结构之一,用于存储“键—值”(key–value)对应关系。它是一种可变的映射类型,键必须唯一且可哈希;从 Python 3.7 起(语言规范保证),字典保留插入顺序,这使得许多操作更加可预测。字典可高效实现查找、计数、配置管理等任务。

与列表不同,字典通过键(key)而不是索引来访问数据。

9.5.1 字典的创建

字典可通过花括号 {} 、构造函数 、以及等多种方法创建。

empty = {}

• 键(key)必须是可哈希(hashable)的对象,通常是不可变类型(如字符串、数值、元组等)。注意:元组只有当其所有元素也都是可哈希时才可作为键。frozenset 也是可哈希的集合类型,可作为键。

• 值(value)可以是任意类型,甚至包含列表、字典或函数等可变对象。

9.5.2 字典的常用操作与方法

字典可实现键值访问、更新、删除、遍历与合并等多种,还提供丰富的用于高效管理数据。

(1)访问与修改

使用键名访问对应的值,若键不存在,.get() 可避免抛出 KeyError。

print(student)  # {'name': '小艾', 'score': 98, 'class': 'A1'}

(2)删除操作

Python 提供多种方式删除字典元素(需注意这些方法的返回值与副作用)。

print(data)  # {}

说明:.pop() 可指定默认值避免 KeyError,如 data.pop("x", None)。

(3)成员判断与长度

print(len(person))        # 字典包含的键值对数量

(4)遍历

通过 .keys()、.values()、.items() 可分别遍历键、值或键值对。

    print(f"{k} -> {v}")

说明:.items() 返回的元素是 (键, 值) 形式的元组,可在循环中直接拆包。

(5)合并与更新

使用 .update() 原地合并两个字典。从 Python 3.9 起,也可用 | 运算符返回新字典。若键冲突,后者会覆盖前者的值。

print(merged)    # {'lr': 0.001, 'batch': 64, 'epochs': 10, 'device': 'cuda'}

(6)安全插入:setdefault()

当键不存在时 .setdefault() 方法自动添加默认值,并返回该键对应的值(存在则直接返回现有值)。适合在分组统计中使用。

print(scores)    # {'小艾': [95, 88], '小包': [90]}

说明:相比手动判断是否存在键,.setdefault() 更简洁高效。但当默认值是可变对象时要注意共享引用问题。

(7)拷贝

字典的赋值只是复制引用,若要复制内容,可使用浅拷贝或深拷贝。

print("原字典未变:", a)   # {'x': 1, 'y': [2, 3, 4]}

说明:浅拷贝只复制外层对象,深拷贝会递归复制所有内部元素。

当字典中包含可变对象(如列表或嵌套字典)时,应使用 deepcopy() 以避免相互影响。

(8)排序与解包

字典本身不可直接“按序”重排,但可通过 等函数获取排序后的视图。

print(extended)  # {'a': 1, 'b': 2}

说明:sorted() 对字典的默认行为是对键排序;若按值排序可用 sorted(d.items(), key=lambda x: x[1])。

解包 {**a, **b} 常用于合并配置或参数表,后者会覆盖前者同名键。

(9)统计与计数

结合 .get() 方法可以手动高效统计频次。

# {'AI': 3, 'Python': 1, 'Code': 1}

说明:在生产环境中也可考虑使用 .Counter。

9.5.3 字典综合示例与应用

例 9.5.1:通讯录管理器

字典非常适合存储“键值一一对应”的信息,如姓名与电话号码的映射。

print("更新后的通讯录:", contacts)

说明:字典在查找操作上具有极高效率,非常适合构建通讯录、配置表、索引映射等结构。

例 9.5.2:商品库存统计系统

通过字典可轻松管理商品与库存数量的映射关系,并支持动态更新与汇总。

    print(f"{item}:{count} 个")

说明:该示例展示了字典在动态数据管理中的典型应用,如库存管理、销售记录或资源计数。在实际开发中,这类字典常与文件或数据库交互,用于实时同步业务数据。

9.6 组合数据的嵌套与综合应用

嵌套与组合是数据结构的高阶应用。通过合理使用列表、元组、集合与字典,可以构建复杂的数据模型,并结合函数或类实现更高层次的抽象能力。

例 9.6.1:学生成绩管理系统

一个学生可以有多门课程成绩,可用字典与列表嵌套表示。

    print(f"{name} 的平均成绩:{average(scores):.1f}")

输出:

鞠子舟 的平均成绩:92.7

此示例结合了字典(键值映射)、列表(序列存储)与函数调用(结构化计算),展示了嵌套数据在实际数据管理中的常见用法。

例 9.6.2:AI 模型参数配置表

在人工智能开发中,模型配置文件通常以嵌套字典形式存储,便于统一管理不同模块参数。

print("训练轮次:", config["training"]["epochs"])  

输出:

训练轮次: 10

嵌套字典是一种常见的数据描述结构,可轻松转换为 文件,用于深度学习模型配置、超参数管理或日志记录。

例 9.6.3:模型训练日志分析器

在机器学习实验中,我们常使用字典与列表来记录训练过程中的多组指标(如损失 loss、准确率 accuracy)。

通过组合数据结构,可以轻松统计与可视化模型性能趋势。

analyze_logs(logs)

输出:

最高准确率:86.00%

说明:此示例结合了列表(顺序存储多轮训练记录) 与 字典(保存每轮的指标),展示了如何组织结构化数据以便分析。

在实际 AI 项目中,可扩展为读取 JSON 训练日志、绘制学习曲线或自动记录实验结果。

小结

本次课系统学习了 Python 的字典(dict)类型,掌握了字典的创建方法、访问与修改技巧、常用方法,并通过综合示例了解了字典在通讯录管理、库存系统、模型配置与日志分析等应用场景中的强大作用。

在下一课中,我们将学习文件操作(File I/O),了解如何将这些内存中的数据包括列表、字典等保存到外部文件(如 .txt、.csv、.json),从而实现数据的持久化存储与跨程序共享。


点赞有美意,赞赏是鼓励

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
广州男篮伤情报告:郭艾伦伤在左膝前交叉韧带 本人自宣“断了”

广州男篮伤情报告:郭艾伦伤在左膝前交叉韧带 本人自宣“断了”

醉卧浮生
2026-03-06 00:22:18
忘恩负义?前国脚直播时炮轰昔日主帅,直言他执教水平极为一般!

忘恩负义?前国脚直播时炮轰昔日主帅,直言他执教水平极为一般!

罗掌柜体育
2026-03-06 13:53:43
稳了!中超开幕式+揭幕战 央视CCTV5会直播!

稳了!中超开幕式+揭幕战 央视CCTV5会直播!

80后体育大蜀黍
2026-03-05 22:07:47
美退伍军人听证会现场大喊: “没人愿意为以色列而战” 被按倒拖走

美退伍军人听证会现场大喊: “没人愿意为以色列而战” 被按倒拖走

闪电新闻
2026-03-05 19:42:22
你见过哪些闷声发大财的人?网友:干这个买三套房子,两个门面

你见过哪些闷声发大财的人?网友:干这个买三套房子,两个门面

夜深爱杂谈
2026-02-01 18:57:04
外媒记者称很多国家羡慕中国

外媒记者称很多国家羡慕中国

中国日报网
2026-03-05 21:00:05
以色列监狱有多荒谬?女狱警在审讯室供犯人玩乐,长官负责牵线

以色列监狱有多荒谬?女狱警在审讯室供犯人玩乐,长官负责牵线

古事寻踪记
2026-03-06 07:08:42
薛之谦好友再爆张杰猛料,二胎本想生龙凤胎,但因抠门生了俩闺女

薛之谦好友再爆张杰猛料,二胎本想生龙凤胎,但因抠门生了俩闺女

西楼知趣杂谈
2026-03-05 18:39:17
萨巴伦卡向德约展示钻戒,12克拉估值约100万美元

萨巴伦卡向德约展示钻戒,12克拉估值约100万美元

懂球帝
2026-03-06 02:00:11
火箭憾负勇士揪出最差之人!20中8+正负值最低,球迷:格林的玩具

火箭憾负勇士揪出最差之人!20中8+正负值最低,球迷:格林的玩具

弄月公子
2026-03-06 15:46:28
尊界M900百万级智能SUV新标杆,能复制S800爆款神话吗?

尊界M900百万级智能SUV新标杆,能复制S800爆款神话吗?

车毂轆
2026-03-06 08:00:50
上街庆祝美以轰炸,这些伊朗人最令人不齿!

上街庆祝美以轰炸,这些伊朗人最令人不齿!

观察者网
2026-03-06 08:08:06
赵今麦居然也穿丝袜了,而且还是油丝 真性感啊

赵今麦居然也穿丝袜了,而且还是油丝 真性感啊

阿废冷眼观察所
2026-03-06 00:55:07
中东撤侨现场:台湾人当场破防,没有台胞证的人就只能干看着!

中东撤侨现场:台湾人当场破防,没有台胞证的人就只能干看着!

星落山间
2026-03-06 00:54:10
李莉评论区被冲,过往言论被反复吐槽,伊朗半小时灭以,回旋镖!

李莉评论区被冲,过往言论被反复吐槽,伊朗半小时灭以,回旋镖!

眼光很亮
2026-03-01 15:39:43
澳大利亚惊现封闭乱伦家族:4代人近亲繁衍38名成员全是乱伦产物

澳大利亚惊现封闭乱伦家族:4代人近亲繁衍38名成员全是乱伦产物

第7情感
2026-02-23 20:45:16
央视2026版西游记官宣

央视2026版西游记官宣

可乐谈情感
2026-03-05 00:09:04
成都“活力28”将开新厂:一度濒临倒闭,“三个老头”直播救厂出圈,靠真诚留流量

成都“活力28”将开新厂:一度濒临倒闭,“三个老头”直播救厂出圈,靠真诚留流量

红星新闻
2026-03-05 20:54:22
勇士爆冷赢火箭!申京大卧底,KD绝望,谢泼德30分,诞生6个现实

勇士爆冷赢火箭!申京大卧底,KD绝望,谢泼德30分,诞生6个现实

毒舌NBA
2026-03-06 11:31:09
难以置信!美国外交官发生车祸后拿刀砍人,被当场击毙

难以置信!美国外交官发生车祸后拿刀砍人,被当场击毙

大洛杉矶LA
2026-03-05 06:58:38
2026-03-06 16:44:49
MediaTea
MediaTea
专业的数字媒体、新媒体技术
1770文章数 79关注度
往期回顾 全部

科技要闻

独家|除夕加班、毫无黑料!林俊旸无奈离场

头条要闻

辽宁省委书记:有些干部热衷于当官 没想为老百姓服务

头条要闻

辽宁省委书记:有些干部热衷于当官 没想为老百姓服务

体育要闻

跑了24年,他终于成为英超“最长的河”

娱乐要闻

周杰伦社交媒体晒昆凌,夫妻感情稳定

财经要闻

经济主题记者会 潘功胜吴清等出席演讲

汽车要闻

岚图梦想家OTA升级:华为乾崑智驾ADS V4.1满血登场

态度原创

艺术
旅游
教育
手机
军事航空

艺术要闻

敦煌壁画里的“动物世界”,温馨有爱!

旅游要闻

【花Young贵阳】长滩河童话小镇:千亩金浪迎客来

教育要闻

重磅官宣!成华区第三所“英”系名校——成都英卓学校正式落定

手机要闻

OPPO Find N6和友商折叠屏对比:折痕差距高下立判

军事要闻

伊朗:使用无人机击中美军"林肯"号航母

无障碍浏览 进入关怀版