字典与文件操作全解析

一、字典

1.1字典的核心概念

字典是键值对映射结构,通过唯一的 "键(key)" 快速查找对应的 "值(value)"(类比学校学号对应学生),是编程中存储关联数据的常用容器。

1.2字典的基础操作

1.创建字典

  • 创建一个空的字典. 使用 { } 表示字典.
  • 也可以在创建的同时指定初始值
  • 键值对之间使用 , 分割 键和值之间使用 : 分割 (冒号后面推荐加一个空格).
  • 使用 print 来打印字典内容
  • 为了代码更规范美观, 在创建字典的时候往往会把多个键值对, 分成多行来书写.

2.查找键与值

  • in判断键是否存在(返回布尔值);
  • 字典[key]获取对应值,键不存在会报KeyError

3.新增 / 修改元素

使用 [ ] 可以根据 key 来新增/修改 value.

  • 如果 key 不存在, 对取下标操作赋值, 即为新增键值对
  • 如果 key 已经存在, 对取下标操作赋值, 即为修改键值对的值.

4.删除元素

  • pop(key)根据键删除对应的键值对。

5.遍历与获取键值

  • 直接遍历字典 → 获取所有键;
  • keys()获取所有键(返回dict_keys类型);
  • values()获取所有值(返回dict_values类型);
  • items()获取所有键值对(返回dict_items类型,元素为元组)。

1.直接使用 for 循环能够获取到字典中的所有的 key, 进一步的就可以取出每个值了.

2.取出所有 key 和 value

  • 使用 keys 方法可以获取到字典中的所有的 key

3.使用 items 方法可以获取到字典中所有的键值对.

1.3合法的 key 类型

不是所有的类型都可以作为字典的 key. 字典本质上是一个 哈希表, 哈希表的 key 要求是 "可哈希的", 也就是可以计算出一个哈希值.

  • 可以使用 hash 函数计算某个对象的哈希值.
  • 但凡能够计算出哈希值的类型, 都可以作为字典的 key.

列表无法计算哈希值.

字典也无法计算哈希值

二、文件

1.文件的基础概念

文件是持久化存储数据的载体(内存数据断电丢失,文件存储在磁盘),常见类型包括文本文件、可执行文件等。文件路径用于定位文件:

  • 绝对路径 :从盘符开始(如D:/program/qq/Bin/QQ.exe);
  • 相对路径:以基准目录为参照,适合项目内文件操作。
  • 文本文件 (txt)
  • 可执行文件 (exe, dll)
  • 图片文件 (jpg, gif)
  • 视频文件 (mp4, mov)
  • office 文件 (.ppt, docx)
2.文件的核心操作

文件操作需遵循 "打开→读写→关闭" 流程,Python 通过open()函数实现:

操作 方法 / 方式 说明
打开文件 f = open(路径, 模式) 模式:r(读)、w(写,清空原内容)、a(追加写);打开失败抛FileNotFoundError
关闭文件 f.close() 必须及时关闭,否则可能超出程序同时打开文件的上限(抛OSError
写文件 f.write(内容) 需以w/a模式打开;w模式会清空原内容,a模式追加到末尾
读文件 f.read(字符数)/for line in f/f.readlines() r模式打开;readlines()返回每行内容组成的列表(含换行符\n

如果文件是多行文本, 可以使用 for 循环一次读取一行.

由于文件里每一行末尾都自带换行符, print 打印一行的时候又会默认加上一个换行符, 因此打印结果看起来之间存在空行. 使用 print(f'line = {line}', end='') 手动把 print 自带的换行符去掉.

3.中文编码问题

文件与 Python 代码的编码方式需匹配(常用 GBK、UTF-8),否则会出现乱码或UnicodeDecodeError

解决方法:打开文件时指定encoding参数(如open(..., encoding='utf8'))。

  • 如果此处的编码为 ANSI , 则表示 GBK 编码.
  • 如果此处为 UTF-8 , 则表示 UTF-8 编码.

此时修改打开文件的代码, 给 open 方法加上 encoding 参数, 显式的指定为和文本相同的字符集, 问题 即可解决.

彻底弄懂常见的7种中文字符编码

4.上下文管理器(with 语句)

with open(...) as f:自动管理文件关闭,避免忘记关闭的问题,代码执行完后会自动调用close()

相关推荐
托尼吴5 分钟前
milvus 向量数据库学习笔记-基础认识
数据库·学习·milvus
拾柒SHY14 分钟前
Python爬虫入门自学笔记
笔记·爬虫·python
Franciz小测测16 分钟前
如何实现 Web 触发后的“离线”升级?Systemd 异步机制与 A/B 状态机切换详解
python·部署·自动升级·离线升级
小北方城市网19 分钟前
第 9 课:Python 全栈项目性能优化实战|从「能用」到「好用」(企业级优化方案|零基础落地)
开发语言·数据库·人工智能·python·性能优化·数据库架构
旖旎夜光22 分钟前
linux(8)(下)
linux·学习
E_ICEBLUE31 分钟前
PPT 智能提取与分析实战:把演示文档变成结构化数据
数据库·python·powerpoint
JSU_曾是此间年少32 分钟前
pytorch自动微分机制探寻
人工智能·pytorch·python
敢敢のwings1 小时前
VGGT-Long:极简主义驱动的公里级单目三维重建系统深度解析(Pytorch安装手册版)
人工智能·pytorch·python
Hcoco_me1 小时前
大模型面试题37:Scaling Law完全指南
人工智能·深度学习·学习·自然语言处理·transformer
aiguangyuan1 小时前
CART算法简介
人工智能·python·机器学习