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

Python快速学习——第6章:字典

第六章字典6.1 什么是字典​ 字典就像一本活的通讯录每个联系人都对应一个电话号码。在字典中我们通过“键”来查找对应的“值”而不是通过位置索引。字典用花括号{}创建每个键值对用冒号:分隔。# 创建一个字典。person{name:张三,age:20,city:北京};# 访问字典中的值。print(person[name]);# 张三。print(person[age]);# 20。6.2 字典的创建方式​ 字典可以用多种方式创建了解一种即可# 直接使用花括号。student{name:李四,score:95,grade:A};# 使用dict()函数。teacherdict(name王老师,subject数学,age35);print(teacher);# {name: 王老师, subject: 数学, age: 35}。# 使用列表的元组对。pairs[(name,赵六),(age,22),(city,上海)];persondict(pairs);print(person);# {name: 赵六, age: 22, city: 上海}。# 创建空字典。empty_dict{};empty_dict2dict();# 使用字典推导式。squares{x:x**2forxinrange(1,6)};print(squares);# {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}。6.3 字典的基本操作6.3.1 访问字典中的值​ 通过键来访问对应的值person{name:张三,age:20,city:北京};print(person[name]);# 张三。print(person[age]);# 20。# 如果键不存在会报错。# print(person[gender]); # KeyError# 使用get()方法安全访问键不存在时返回None或默认值。print(person.get(gender));# None。print(person.get(gender,未知));# 未知。6.3.2 添加和修改键值对person{name:张三,age:20};# 添加新的键值对。person[city]北京;print(person);# {name: 张三, age: 20, city: 北京}。# 修改已有的键值对。person[age]21;print(person);# {name: 张三, age: 21, city: 北京}。6.3.3 删除键值对person{name:张三,age:20,city:北京,gender:男};# del - 删除指定键。delperson[city];print(person);# {name: 张三, age: 20, gender: 男}。# pop() - 删除并返回指定键的值。ageperson.pop(age);print(age);# 20。print(person);# {name: 张三, gender: 男}。# popitem() - 删除并返回最后插入的键值对Python 3.7 保留插入顺序。last_itemperson.popitem();print(last_item);# (gender, 男)。print(person);# {name: 张三}。# clear() - 清空字典。person.clear();print(person);# {}。6.3.4 字典长度使用len()获取字典中键值对的数量person{name:张三,age:20,city:北京};print(len(person));# 3。6.3.5 检查键是否存在使用in关键字检查键是否在字典中person{name:张三,age:20};print(nameinperson);# True。print(salaryinperson);# False。6.4 字典的常用方法6.4.1 获取所有键、值、键值对person{name:张三,age:20,city:北京};# keys() - 获取所有键。print(person.keys());# dict_keys([name, age, city])。# values() - 获取所有值。print(person.values());# dict_values([张三, 20, 北京])。# items() - 获取所有键值对元组形式。print(person.items());# dict_items([(name, 张三), (age, 20), (city, 北京)])。# 转换为列表。keys_listlist(person.keys());print(keys_list);# [name, age, city]。6.4.2 update() 方法合并另一个字典或键值对序列到当前字典person{name:张三,age:20};# 合并另一个字典。extra{city:北京,age:21};person.update(extra);print(person);# {name: 张三, age: 21, city: 北京}。# 使用关键字参数。person.update(gender男,height175);print(person);# {name: 张三, age: 21, city: 北京, gender: 男, height: 175}。6.4.3 setdefault() 方法如果键存在则返回其值如果不存在则设置默认值并返回person{name:张三};# 键存在时返回原值不修改。nameperson.setdefault(name,李四);print(name);# 张三。print(person);# {name: 张三}。# 键不存在时设置默认值。cityperson.setdefault(city,北京);print(city);# 北京。print(person);# {name: 张三, city: 北京}。6.4.4 fromkeys() 方法创建一个新字典从序列中提取键所有键对应同一个默认值# 创建键序列。keys[name,age,city];# 所有键使用相同的默认值。default_dictdict.fromkeys(keys,未知);print(default_dict);# {name: 未知, age: 未知, city: 未知}。# 不指定默认值时默认值为None。empty_defaultdict.fromkeys(keys);print(empty_default);# {name: None, age: None, city: None}。6.5 字典的遍历6.5.1 遍历键person{name:张三,age:20,city:北京};# 直接遍历字典默认遍历键。forkeyinperson:print(f{key}:{person[key]});# 使用keys()方法显式遍历键。forkeyinperson.keys():print(key);运行结果name: 张三 age:20city: 北京 name age city6.5.2 遍历值person{name:张三,age:20,city:北京};forvalueinperson.values():print(value);运行结果张三20北京6.5.3 遍历键值对person{name:张三,age:20,city:北京};forkey,valueinperson.items():print(f{key}-{value});运行结果name -张三 age -20city -北京6.6 字典的嵌套字典可以嵌套使用即字典中的值可以是另一个字典、列表等# 学生信息字典每个学生的信息又是一个字典。students{1001:{name:张三,age:20,scores:[85,90,88]},1002:{name:李四,age:21,scores:[92,87,95]},1003:{name:王五,age:19,scores:[78,85,80]}};# 访问嵌套数据。print(students[1001][name]);# 张三。print(students[1002][scores][1]);# 87 - 李四的第二门成绩。# 添加新学生。students[1004]{name:赵六,age:22,scores:[88,92,90]};# 遍历嵌套字典。forstu_id,infoinstudents.items():print(f学号{stu_id}姓名{info[name]}平均分{sum(info[scores])/len(info[scores]):.1f});运行结果学号1001姓名张三平均分87.7 学号1002姓名李四平均分91.3 学号1003姓名王五平均分81.0 学号1004姓名赵六平均分90.06.7 字典推导式使用简洁的方式创建字典# 将列表转换为字典列表元素作为键索引作为值。fruits[苹果,香蕉,橙子];fruit_dict{fruit:indexforindex,fruitinenumerate(fruits)};print(fruit_dict);# {苹果: 0, 香蕉: 1, 橙子: 2}。# 筛选条件只保留偶数平方。even_squares{x:x**2forxinrange(1,11)ifx%20};print(even_squares);# {2: 4, 4: 16, 6: 36, 8: 64, 10: 100}。# 交换现有字典的键和值。original{a:1,b:2,c:3};swapped{value:keyforkey,valueinoriginal.items()};print(swapped);# {1: a, 2: b, 3: c}。6.8 字典的排序字典在 Python 3.7 中保持插入顺序但有时需要按键或值排序scores{张三:85,李四:92,王五:78,赵六:96};# 按键排序。sorted_by_keydict(sorted(scores.items()));print(sorted_by_key);# {张三: 85, 李四: 92, 王五: 78, 赵六: 96}。# 按值排序升序。sorted_by_valuedict(sorted(scores.items(),keylambdaitem:item[1]));print(sorted_by_value);# {王五: 78, 张三: 85, 李四: 92, 赵六: 96}。# 按值排序降序。sorted_by_value_descdict(sorted(scores.items(),keylambdaitem:item[1],reverseTrue));print(sorted_by_value_desc);# {赵六: 96, 李四: 92, 张三: 85, 王五: 78}。6.9 字典的合并多种方式合并字典dict1{a:1,b:2};dict2{c:3,d:4};# 方法1使用update()修改原字典。dict1.update(dict2);print(dict1);# {a: 1, b: 2, c: 3, d: 4}。# 方法2使用 ** 解包Python 3.5创建新字典。dict1{a:1,b:2};dict2{c:3,d:4};merged{**dict1,**dict2};print(merged);# {a: 1, b: 2, c: 3, d: 4}。# 方法3使用 | 运算符Python 3.9。dict1{a:1,b:2};dict2{c:3,d:4};mergeddict1|dict2;print(merged);# {a: 1, b: 2, c: 3, d: 4}。# 合并时处理重复键后面的覆盖前面的。dict3{a:10,b:20};dict4{b:99,c:30};merged2dict3|dict4;print(merged2);# {a: 10, b: 99, c: 30}。本章笔记字典是键值对的集合通过键来访问值而不是索引。字典使用花括号创建键和值用冒号分隔。字典的键必须是不可变类型可哈希值可以是任意类型。支持添加、修改、删除键值对使用in检查键是否存在。常用方法keys()、values()、items()、get()、update()、pop()、setdefault()等。可以遍历字典的键、值或键值对。字典可以嵌套形成复杂的数据结构。字典推导式可以快速创建字典。字典在 Python 3.7 中保持插入顺序。字典常用于配置存储、计数器、缓存、查找表等场景。

相关文章:

Python快速学习——第6章:字典

第六章:字典 6.1 什么是字典? ​ 字典就像 一本活的通讯录,每个联系人都对应一个电话号码。在字典中,我们通过“键”来查找对应的“值”,而不是通过位置索引。字典用花括号 {} 创建,每个键值对用冒号 : 分隔…...

AI驱动Next.js应用生成器Nextly:从自然语言到全栈代码的自动化实践

1. 项目概述:当自然语言遇见全栈开发如果你和我一样,是个常年泡在代码里的开发者,肯定对“从零开始”搭建一个新项目又爱又恨。爱的是那种创造新事物的快感,恨的是那些重复、繁琐的“脏活累活”:配置 Next.js 项目结构…...

ChatGPT痴迷妖精引关注:使用频率激增175%,OpenAI多举措修复

ChatGPT的“妖精”痴迷现象ChatGPT对妖精有着奇特的痴迷,在ChatGPT - 5.1及更新的模型中尤为显著。自GPT - 5.1发布后,其回答中“妖精”一词的使用频率上升了175%,“小精怪”的使用频率上升了52%。这种现象不仅在“书呆子”人格下关键词使用量…...

ADI DSP调试避坑指南:用CCES的Session Test功能快速排查JTAG链路问题(附14转10接头正确插法)

ADI DSP调试实战:巧用CCES Session Test功能破解JTAG连接难题 第一次将ADI DSP开发板连接到电脑时,仿真器指示灯正常亮起,但CCES软件却始终无法识别设备——这种场景对嵌入式开发者来说再熟悉不过。当传统排查手段失效时,一个被多…...

火电机组再热汽温控制【附Matlab仿真】

✅ 博主简介:擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导,毕业论文、期刊论文经验交流。 ✅ 如需沟通交流,扫描文章底部二维码。(1)粒子群参数寻优的混合建模辨识:以某1000MW机组再…...

搜索代理技术:提升模糊查询准确率的实战解析

1. 项目背景与核心价值在信息检索领域,模糊查询一直是提升用户体验的关键技术难点。传统搜索引擎对精确关键词匹配已经做得相当成熟,但当用户输入不完整、拼写错误或使用近义词时,系统的召回率和准确率往往会大幅下降。这就是搜索代理&#x…...

C语言FDA测试不是写TestCase,而是构建可审计证据链:从需求→设计→代码→测试→配置管理的12节点闭环验证体系

更多请点击: https://intelliparadigm.com 第一章:C语言FDA测试的本质认知:从合规验证到证据链构建 FDA对医疗设备嵌入式软件(如基于C语言开发的驱动、控制模块)的监管核心并非仅关注功能正确性,而是要求开…...

USB 2.0 AMBA子系统设计与DesignWare IP集成指南

1. USB 2.0 AMBA子系统设计概述在现代SoC设计中,USB 2.0作为高速数据传输标准已成为不可或缺的组成部分。其480Mbps的传输速率相比USB 1.1提升了40倍,为各种外设连接提供了充足的带宽。然而,将USB 2.0控制器集成到复杂SoC中面临诸多挑战&…...

大气层系统架构深度解析:如何构建安全稳定的Switch自定义固件

大气层系统架构深度解析:如何构建安全稳定的Switch自定义固件 【免费下载链接】Atmosphere-stable 大气层整合包系统稳定版 项目地址: https://gitcode.com/gh_mirrors/at/Atmosphere-stable 大气层(Atmosphere)是任天堂Switch上最先进…...

新手避坑指南:从零开始用XC7Z020核心板搭建你的第一个ZYNQ项目(附完整配置流程)

新手避坑指南:从零开始用XC7Z020核心板搭建你的第一个ZYNQ项目 第一次接触ZYNQ核心板时,很多开发者会被它强大的功能所吸引,但同时也容易被复杂的配置流程所困扰。XC7Z020-2CLG484I作为ZYNQ7000系列中的经典型号,集成了双核ARM Co…...

在多模型聚合场景下如何利用 Taotoken 进行智能选型

在多模型聚合场景下如何利用 Taotoken 进行智能选型 1. 多模型选型的核心挑战 在实际业务开发中,不同任务对模型的需求差异显著。文本生成可能需要长上下文支持,代码补全需要特定领域的微调能力,而对话场景则更关注响应速度与交互体验。传统…...

神经前向模型提升人形机器人轨迹跟踪精度

1. 项目背景与核心价值 人形机器人末端执行器的轨迹跟踪精度一直是制约其实际应用的关键瓶颈。传统控制方法在面对复杂环境交互时,往往表现出响应迟滞、误差累积等问题。我们团队通过引入神经前向模型(Neural Forward Model),在保…...

从一次线上故障复盘讲起:DMZ 配置不当,如何让你的 FTP 服务器成为内网“后门”?

从一次线上故障复盘讲起:DMZ 配置不当,如何让你的 FTP 服务器成为内网“后门”? 凌晨三点,运维工程师小李被刺耳的电话铃声惊醒。监控系统显示,公司核心数据库出现异常访问流量。当他匆忙登录服务器排查时,…...

OpenAI 2028 年将量产自研 AI 手机,能否重定义人机交互?

OpenAI 押注 AI 手机,挑战苹果三星双垄断格局近日,天风国际证券分析师郭明錤透露,OpenAI 正在自研手机,预计 2028 年量产。OpenAI 选择了所有硬件里最难啃、门槛最高、容错率最低的手机赛道,这一决策背后有着多方面的考…...

使用 UniApp 来开发手持 PDA 的数据录入应用

使用 UniApp 来开发手持 PDA 的数据录入应用,是当前技术选型中一个非常主流且可行的方案。简单来说,UniApp 是一个开发框架,而利用它为 PDA 开发应用,正是为了实现将现场采集的数据录入后台数据库这一核心目的。以下是其具体实现路…...

2048游戏AI助手:让数字合并变得轻松有趣

2048游戏AI助手:让数字合并变得轻松有趣 【免费下载链接】2048-ai AI for the 2048 game 项目地址: https://gitcode.com/gh_mirrors/20/2048-ai 你是否曾经在玩2048游戏时感到困惑?面对不断出现的数字方块,不知道下一步该往哪个方向滑…...

告别跨域烦恼:手把手教你用DCloud插件在UNIAPP里完美预览PDF(附iOS/安卓避坑指南)

告别跨域烦恼:手把手教你用DCloud插件在UNIAPP里完美预览PDF(附iOS/安卓避坑指南) 在移动应用开发中,PDF预览功能几乎是企业应用、教育类App的标配需求。然而,当UNIAPP开发者满怀信心地集成PDF预览功能后,却…...

手把手教你用STM32和AFE芯片搭建一个简易的锂电池BMS保护板(附源码)

手把手教你用STM32和AFE芯片搭建简易锂电池BMS保护板 在电子DIY领域,锂电池管理系统(BMS)一直是热门话题。无论是电动滑板车、便携式储能设备还是自制机器人,锂电池的安全使用都离不开BMS的保护。本文将带你从零开始,用…...

跨平台流媒体下载利器:N_m3u8DL-RE深度解析与实战指南

跨平台流媒体下载利器:N_m3u8DL-RE深度解析与实战指南 【免费下载链接】N_m3u8DL-RE Cross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文. 项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE …...

告别‘so库找不到’:用Android Studio的APK Analyzer一键诊断libc++_shared.so缺失问题

告别‘so库找不到’:用Android Studio的APK Analyzer一键诊断libc_shared.so缺失问题 在Android NDK开发中,libc_shared.so缺失导致的运行时崩溃堪称经典难题。当你在构建阶段一切顺利,却在安装运行时遭遇java.lang.UnsatisfiedLinkError&…...

TI CC2642R1开发环境配置避坑大全:从syscfg图形化到OpenOCD调试的那些‘坑’

TI CC2642R1开发环境深度排障指南:破解VSCode环境下的12个高频陷阱 在嵌入式开发领域,TI的CC2642R1蓝牙低功耗SoC凭借其优异的射频性能和丰富的外设资源,已成为IoT设备开发的热门选择。然而当开发者从传统IDE转向更灵活的VSCode环境时&#x…...

别再只会用SALV显示数据了!手把手教你实现ABAP报表的交互式操作(含双击、链接点击事件)

解锁SALV交互潜能:从静态表格到动态业务工具的实战指南 在ABAP开发领域,SALV(Simple ALV Grid)常被视为快速展示数据的便捷工具,但大多数开发者仅停留在基础显示功能上。想象这样一个场景:财务人员需要审核…...

告别 ObservableObject:Swift 5.9 的 @Observable 宏在真实项目里该怎么传值?

Swift 5.9 Observable 宏在复杂项目中的七种数据传递模式实战 当 SwiftUI 遇上 Observation 框架,数据流管理正在经历革命性变化。去年还在为 ObservableObject 的引用类型烦恼的开发者们,现在迎来了更轻量的 Observable 宏方案。但问题来了——在真实的…...

保姆级教程:用示波器抓取SATA硬盘上电握手信号(COMRESET/COMINIT/COMWAKE)

保姆级教程:用示波器抓取SATA硬盘上电握手信号(COMRESET/COMINIT/COMWAKE) 当你面对一块无法识别的SATA硬盘时,最令人抓狂的往往是那些看不见的信号问题。作为硬件工程师,我们常常需要像侦探一样,通过蛛丝马…...

告别重复点击:3分钟掌握MouseClick鼠标连点器高效自动化技巧

告别重复点击:3分钟掌握MouseClick鼠标连点器高效自动化技巧 【免费下载链接】MouseClick 🖱️ MouseClick 🖱️ 是一款功能强大的鼠标连点器和管理工具,采用 QT Widget 开发 ,具备跨平台兼容性 。软件界面美观 &#…...

CUBLAS库实战避坑指南:从‘内存暴涨2.2GB’到高效调用的正确姿势

CUBLAS库实战避坑指南:从‘内存暴涨2.2GB’到高效调用的正确姿势 当你第一次调用cublasCreate(&handle)时,是否也被突然飙升的2.2GB内存占用吓到?这背后隐藏着CUDA生态系统的深层设计逻辑。本文将带你穿透表象,掌握CUBLAS高效…...

Investing Algorithm Framework:从策略回测到实盘部署的全栈量化开发指南

1. 项目概述:一个为实战而生的量化策略开发框架 如果你正在寻找一个能让你从策略构思、回测验证到最终部署形成完整闭环的Python量化框架,那么Investing Algorithm Framework(IAF)绝对值得你花时间深入研究。它不是另一个仅仅输出…...

2026年上海靠谱厨房翻新改造公司大揭秘,让你的厨房焕然一新!

在上海,厨房翻新改造是许多家庭关注的问题。面对众多的装修公司,如何选择一家靠谱的呢?今天就为大家详细介绍一家值得信赖的公司——上海爱诺家邦装饰工程有限公司,同时与其他一些大厂进行对比,让你清晰了解其优势。一…...

Nintendo Switch大气层系统终极指南:从零开始解锁你的游戏主机

Nintendo Switch大气层系统终极指南:从零开始解锁你的游戏主机 【免费下载链接】Atmosphere-stable 大气层整合包系统稳定版 项目地址: https://gitcode.com/gh_mirrors/at/Atmosphere-stable 你是否想让自己的Switch游戏主机发挥出全部潜力?大气…...

OpenClaw AI助手健康审计:8项关键指标诊断与自动化运维实践

1. 项目概述:为你的AI助手做一次“全身体检”如果你正在使用OpenClaw这类AI助手,有没有想过,它运行久了会不会也像我们的电脑一样,产生“系统垃圾”?比如,安装了一堆用不上的技能(Skill&#xf…...