字典——我终于能让程序像查字典一样找东西了
📅 2026/7/10 11:53:30
👁️ 次浏览
一、字典是什么想象一下你手机上的通讯录。你不会说第3个人是谁而是直接说张三的电话是多少。通讯录就是通过联系人姓名找到电话号码的。字典就是程序里的通讯录——它用键(Key)来查找对应的值(Value)。在Python里字典用花括号{}表示每一对数据由键和值组成用冒号:连接多对数据用逗号隔开键 值 键 值 键 值student {“name”: “张三”, “age”: 18, “city”: “北京”}键是查找的依据值是要找的数据。键必须是不可变类型——比如字符串、数字、元组。列表是可变类型不能作为字典的键这个坑我们后面会专门讲。二、根据键获取值想拿到字典里的某个值用字典名[键]:student {“name”: “张三”, “age”: 18, “city”: “北京”}print(student[“name”]) # 张三print(student[“age”]) # 18三、一个我踩过的坑KeyError如果访问一个不存在的键Python会报错student {“name”: “张三”, “age”: 18}print(student[“city”])运行后报错KeyError: ‘city’因为字典里没有city这个键所以找不到。每次访问字典之前最好确认你用的键是存在的。四、字典的常用操作1.新增或修改直接给一个键赋值如果键不存在就新增如果键已存在就覆盖student {“name”: “张三”, “age”: 18}新增一个键值对student[“city”] “北京”print(student) # {‘name’: ‘张三’, ‘age’: 18, ‘city’: ‘北京’}修改已有的键的值student[“age”] 19print(student) # {‘name’: ‘张三’, ‘age’: 19, ‘city’: ‘北京’}2.删除:pop()删除指定的键值对student {“name”: “张三”, “age”: 18, “city”: “北京”}student.pop(“city”)print(student) # {‘name’: ‘张三’, ‘age’: 18}3.安全取值get()用get()方法可以在键不存在时返回一个默认值而不是报错student {“name”: “张三”, “age”: 18}print(student.get(“city”)) # Noneprint(student.get(“city”, “未知”)) # 未知4.查看所有键、所有值、所有键值对student {“name”: “张三”, “age”: 18, “city”: “北京”}print(student.keys()) # dict_keys([‘name’, ‘age’, ‘city’])print(student.values()) # dict_values([‘张三’, 18, ‘北京’])print(student.items()) # dict_items([(‘name’, ‘张三’), (‘age’, 18), (‘city’, ‘北京’)])keys()、values()、items() 返回的是视图对象可以直接用于循环遍历但不能像列表那样直接按下标访问。如果需要下标访问可以用 list() 转换后使用但实际场景中通常直接遍历就够了。五、遍历字典1.遍历所有键值对最常用student {“name”: “张三”, “age”: 18, “city”: “北京”}for key, value in student.items():print(f{key}: {value})运行结果name: 张三age: 18city: 北京2.只遍历键for key in student.keys():print(key)3.只遍历值for value in student.values():print(value)六、一个我踩过的坑列表不能作为字典的键前面提到过字典的键必须是不可变类型。列表是可变的所以不能当键错误示范d {[“a”, “b”]: “这是列表当键”} # 报错运行后会报 TypeError: unhashable type: ‘list’。因为列表的内容可以随时增删改Python无法保证它稳定可用。但元组可以作为键因为元组是不可变的d {(“a”, “b”): “这是元组当键”}print(d[(“a”, “b”)]) # 这是元组当键七、列表VS字典场景 推荐用 原因按编号/顺序存取数据 列表 按位置查找速度快按名字/ID查找数据 字典 键值对应查找方便数据是一组固定字段 字典 每个字段有名字代码可读性高数据需要频繁增删改 列表或字典都可以 两者都支持看需求八、综合示例学生成绩管理系统把今天学的东西串起来用字典存储学生信息students {}while True:print(“\n— 学生成绩管理系统 —”)print(“1. 添加学生”)print(“2. 查看所有学生”)print(“3. 查询学生成绩”)print(“4. 删除学生”)print(“5. 退出”)choice input(请选择) if choice 1: name input(请输入姓名) score input(请输入成绩) students[name] score print(添加成功) elif choice 2: if len(students) 0: print(暂无学生数据) else: for name, score in students.items(): print(f{name}{score}分) elif choice 3: name input(请输入要查询的姓名) score students.get(name) if score is None: print(未找到该学生) else: print(f{name}的成绩是{score}分) elif choice 4: name input(请输入要删除的姓名) if name in students: students.pop(name) print(删除成功) else: print(未找到该学生) elif choice 5: print(再见) break else: print(无效选择请重新输入)这段代码包含了今天学的·字典的定义students {}·新增/修改students[name] score·查询students.get(name)·删除students.pop(name)·遍历for name, score in students.items()小结今天学的东西整理成一张速查表知识点 说明 示例定义字典 用 {} 包裹键值对 d 取值 通过键获取值 d[“name”]新增/修改 键不存在则新增存在则覆盖 d[“age”] 18get() 安全取值 d.get(“city”, “未知”)pop() 删除键值对 d.pop(“city”)keys() 获取所有键 d.keys()values() 获取所有值 d.values()items() 获取所有键值对 d.items()遍历 循环取出键值对 for k, v in d.items():键的要求 必须是不可变类型 字符串、数字、元组什么时候用字典·需要根据某个“名字”查找对应的“值”·存储一条记录的多个字段如用户信息、商品信息·需要快速查找不关心顺序下一篇我打算学集合。
1. 项目概述:从SSTI漏洞到WAF对抗的实战演练 在Web安全测试的日常工作中,服务器端模板注入(SSTI)漏洞因其强大的利用潜力,一直是渗透测试人员和红队成员关注的重点。它不像SQL注入那样广为人知,但一旦成功利…
📅 2026/7/10 11:53:30
AIGC时代内容安全技术全景:从数字水印到AI检测的演进与实践当Midjourney生成的虚拟网红在Instagram收获百万粉丝,当GPT-4撰写的新闻稿被多家媒体转载,我们正见证AIGC技术重塑内容生产方式的革命。这场革命在释放创造力的同时,也带…
📅 2026/7/10 11:53:30
3分钟掌握Etcher:跨平台镜像烧录终极指南 【免费下载链接】etcher Flash OS images to SD cards & USB drives, safely and easily. 项目地址: https://gitcode.com/GitHub_Trending/et/etcher
在操作系统部署、嵌入式开发或系统恢复场景中,如…
📅 2026/7/10 11:52:30
更多请点击:
https://codechina.net
第一章:Cursor AI生成的React组件总报错?92%开发者忽略的5个TypeScript兼容陷阱(含修复代码片段) Cursor AI在加速React开发的同时,常因TypeScript类型系统与AI生成逻辑…
📅 2026/7/10 13:01:58
3步解锁Minecraft电影级画质:Photon-GAMS光影包新手终极指南 【免费下载链接】Photon-GAMS Personal fork of Photon shaders 项目地址: https://gitcode.com/gh_mirrors/ph/Photon-GAMS
你是否还在为Minecraft的方块世界缺乏视觉冲击力而苦恼?是…
📅 2026/7/10 13:01:58
我们的晚餐并非来自屠宰商、酿酒师和面包师的恩惠,而是来自他们对自身利益的。 ——亚当斯密 学也者,观察事物而发明其真理也;术也者,取所发明之真理而致诸用者也。 ——梁启超 1. 选择:鱼和熊掌之间的权衡取舍
们在日…
📅 2026/7/10 13:01:58
RedisDesktopManager Windows终极指南:告别命令行,3分钟搭建可视化Redis管理平台 【免费下载链接】RedisDesktopManager-Windows RedisDesktopManager Windows版本 项目地址: https://gitcode.com/gh_mirrors/re/RedisDesktopManager-Windows
还在…
📅 2026/7/10 13:01:58
对于距离来说,在机器学习中用的最多的就是聚类算法Clustering,Clustering以各种距离为根据判断两条数据是否为同一类。
1. 欧几里得距离 我们从最常见的距离测量开始,即欧几里得距离。这是一种距离测量,最好的解释是连接两点的线…
📅 2026/7/10 13:01:58
基础数学学习地图 北京大学数学与应用数学双学位的学分要求 参考文献
Mathematics | MIT OpenCourseWare | Free Online Course Materials我想业余时间系统学习数学,想求一份学习地图,请问我应该该怎么学习呢?学习哪些 和教程呢?…
📅 2026/7/10 13:00:58
一、为什么接口自动化测试,适合用AI赋能?
大家可自行先思考一个问题:
AI赋能测试全流程,为什么优先推荐从接口自动化切入?
有三个典型原因:
接口输入结构化,AI最擅长"吃"
接口有OpenA…
📅 2026/7/10 0:00:53
终极原神FPS解锁器完整指南:轻松突破60帧限制 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock
原神FPS解锁器是一款专为《原神》玩家设计的开源工具,通过先进的Wri…
📅 2026/7/10 0:00:53
YesPlayMusic:如何用高颜值播放器重塑你的网易云音乐体验?🎵 【免费下载链接】YesPlayMusic 高颜值的第三方网易云播放器,支持 Windows / macOS / Linux :electron: 项目地址: https://gitcode.com/gh_mirrors/ye/YesPlayMusic…
📅 2026/7/10 0:00:53
1. 项目背景与核心需求 在嵌入式系统开发中,快速精确的数据检索是一个常见但极具挑战性的需求。特别是在工业控制、医疗设备和物联网终端等场景下,系统往往需要在毫秒级时间内完成关键参数的读取和写入操作。传统基于Flash存储的方案存在擦写次数有限、操…
📅 2026/7/9 15:10:35
1. 工业电流环信号传输的基础认知在工业自动化领域,4-20mA电流环传输技术已经持续服役超过半个世纪。这种看似简单的信号传输方式之所以能经久不衰,核心在于其独特的抗干扰能力——电流信号在长距离传输时几乎不受线路电阻和电压波动的影响。我曾在化工厂…
📅 2026/7/9 14:14:01
最近在项目里尝试用 YOLO 做目标检测,从环境搭建到模型训练,再到推理部署,整个过程踩了不少坑。网上的资料虽然多,但要么版本老旧,要么步骤零散不成体系,对于刚入门的新手来说,很容易卡在某个环…
📅 2026/7/9 15:10:36
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/9 15:10:36
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/9 15:10:36
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/9 15:10:36