影刀RPA 字典的使用:键值对数据的存储与查询
影刀RPA 字典的使用键值对数据的存储与查询作者林焱字典是Python中最重要的数据结构之一。在RPA流程中字典无处不在——API返回的JSON是字典、配置文件解析后是字典、Excel数据转成字典列表更好处理。但很多新手只会用列表遇到按商品名查价格的需求时还在列表里遍历查找效率低得可怜。这篇文章把字典的创建、访问、遍历和实战场景讲全让你学会用字典提升流程效率。一、为什么用字典先看一个对比例子用列表查找从1000个商品中找蓝牙耳机的价格products[[苹果,5.0],[香蕉,3.5],[蓝牙耳机,99.9],...]# 遍历查找priceNoneforname,pinproducts:ifname蓝牙耳机:pricepbreak# 要遍历到第3个才找到最坏要遍历1000次用字典查找products{苹果:5.0,香蕉:3.5,蓝牙耳机:99.9,...}# 直接查找priceproducts.get(蓝牙耳机)# 99.9# 一次查找无需遍历字典的查找速度是O(1)无论字典有多大查找时间几乎不变。这是字典最大的优势。二、创建字典# 直接创建prices{苹果:5.0,香蕉:3.5,橘子:4.0}# 空字典empty_dict{}# 从两个列表创建names[苹果,香蕉,橘子]values[5.0,3.5,4.0]pricesdict(zip(names,values))# {苹果: 5.0, 香蕉: 3.5, 橘子: 4.0}# 字典推导式squares{x:x**2forxinrange(1,6)}# {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}# 从键值对列表创建pairs[(A,1),(B,2),(C,3)]ddict(pairs)# {A: 1, B: 2, C: 3}三、访问字典3.1 基本访问prices{苹果:5.0,香蕉:3.5,橘子:4.0}# 用方括号访问priceprices[苹果]# 5.0# 键不存在会报KeyError# price prices[葡萄] # 报错[video(video-18vFsEE3-1784019790557)(type-csdn)(url-https://live.csdn.net/v/embed/526818)(image-https://v-blog.csdnimg.cn/asset/582d14c3bd0451c5399cd990b56e2a0d/cover/Cover0.jpg)(title-拼多多店群自动化报活动上架)]# 用get访问推荐priceprices.get(葡萄)# None键不存在返回Nonepriceprices.get(葡萄,0)# 0键不存在返回默认值0坑用方括号访问不存在的键会报错# 危险如果键不存在流程直接崩溃priceprices[不存在的键]# KeyError# 安全用get方法priceprices.get(不存在的键,0)# 返回03.2 获取所有键/值/键值对prices{苹果:5.0,香蕉:3.5,橘子:4.0}# 所有键keyslist(prices.keys())# [苹果, 香蕉, 橘子]# 所有值valueslist(prices.values())# [5.0, 3.5, 4.0]# 所有键值对itemslist(prices.items())# [(苹果, 5.0), (香蕉, 3.5), (橘子, 4.0)]3.3 判断键是否存在if苹果inprices:print(f苹果的价格是{prices[苹果]})else:print(没有苹果的价格信息)四、修改字典4.1 添加和修改prices{苹果:5.0,香蕉:3.5}# 添加新键值对prices[葡萄]8.0# 修改已有键的值prices[苹果]5.5# 批量添加prices.update({西瓜:3.0,芒果:6.0})# {苹果: 5.5, 香蕉: 3.5, 葡萄: 8.0, 西瓜: 3.0, 芒果: 6.0}4.2 删除prices{苹果:5.0,香蕉:3.5,橘子:4.0}# del删除delprices[香蕉]# pop删除并返回值removedprices.pop(橘子)# removed4.0# 清空prices.clear()坑del删除不存在的键报错delprices[不存在的键]# KeyError# 安全删除if香蕉inprices:delprices[香蕉]# 或者用pop不报错prices.pop(不存在的键,None)# 键不存在返回None五、遍历字典5.1 遍历键值对prices{苹果:5.0,香蕉:3.5,橘子:4.0}# 遍历键值对推荐forname,priceinprices.items():print(f{name}: ¥{price})# 遍历键fornameinprices.keys():print(name)# 遍历值forpriceinprices.values():print(price)5.2 按顺序遍历# 按键排序fornameinsorted(prices.keys()):print(f{name}:{prices[name]})# 按值排序forname,priceinsorted(prices.items(),keylambdax:x[1]):print(f{name}:{price})# 按值降序forname,priceinsorted(prices.items(),keylambdax:x[1],reverseTrue):print(f{name}:{price})六、嵌套字典6.1 字典的值是字典products{A001:{name:蓝牙耳机,price:99.9,stock:100},A002:{name:充电宝,price:59.0,stock:200},A003:{name:数据线,price:19.9,stock:500},}# 访问嵌套数据nameproducts[A001][name]# 蓝牙耳机priceproducts[A002][price]# 59.0# 安全访问防止键不存在nameproducts.get(A999,{}).get(name,未知)# 未知# 添加嵌套数据products[A004]{name:手机壳,price:29.9,stock:300}# 修改嵌套数据products[A001][stock]95# 库存减5坑嵌套字典的get链# 不安全如果products[A999]不存在{}的get返回None再.get报错nameproducts.get(A999,{}).get(name)# None安全# 但如果嵌套更深data{a:{b:{c:1}}}valuedata.get(a,{}).get(b,{}).get(c)# 1valuedata.get(x,{}).get(b,{}).get(c)# None6.2 字典的值是列表# 按分类存储商品catalog{电子:[手机,电脑,平板],食品:[苹果,面包,牛奶],服装:[T恤,裤子,外套],}# 添加元素catalog[电子].append(耳机)# 遍历forcategory,itemsincatalog.items():print(f{category}:{, .join(items)})6.3 字典列表最常见的数据结构——从Excel读取的数据通常就是字典列表products[{id:1,name:商品A,price:10.0},{id:2,name:商品B,price:20.0},{id:3,name:商品C,price:30.0},]# 遍历forproductinproducts:print(f{product[name]}: ¥{product[price]})# 查找targetnext((pforpinproductsifp[id]2),None)# {id: 2, name: 商品B, price: 20.0}# 过滤expensive[pforpinproductsifp[price]15]# [{id: 2, ...}, {id: 3, ...}]# 提取某列names[p[name]forpinproducts]# [商品A, 商品B, 商品C]七、字典的高级用法7.1 defaultdictfromcollectionsimportdefaultdict# 按分类分组products[{name:A,category:电子},{name:B,category:食品},{name:C,category:电子},]# 普通字典需要手动检查键是否存在grouped{}forpinproducts:![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/1c9761d6c6c943069fda6ca9e0fffce1.png#pic_center)catp[category]ifcatnotingrouped:grouped[cat][]grouped[cat].append(p[name])# defaultdict自动创建空列表groupeddefaultdict(list)forpinproducts:grouped[p[category]].append(p[name])# {电子: [A, C], 食品: [B]}7.2 字典合并dict1{A:1,B:2}dict2{C:3,D:4}# Python 3.9mergeddict1|dict2# {A: 1, B: 2, C: 3, D: 4}# Python 3.5merged{**dict1,**dict2}# update方法修改dict1dict1.update(dict2)7.3 Counter统计fromcollectionsimportCounter# 统计列表中每个元素出现次数words[苹果,香蕉,苹果,橘子,苹果,香蕉]counterCounter(words)# Counter({苹果: 3, 香蕉: 2, 橘子: 1})# 取出现次数最多的most_commoncounter.most_common(2)# [(苹果, 3), (香蕉, 2)]TEMU店群矩阵自动化运营核价报活动八、实战场景8.1 Excel数据转字典importpandasaspd dfpd.read_excel(D:\\data\\product.xlsx)# 以ID为键整行为值productsdf.set_index(商品ID).to_dict(index)# {1: {name: 商品A, price: 10.0}, 2: {...}, ...}![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/d9a9e7b63be348038509dcdafdc3518a.png#pic_center)# 以ID为键价格为值price_mapdict(zip(df[商品ID],df[价格]))# {1: 10.0, 2: 20.0, ...}8.2 配置文件管理config{database:{host:192.168.1.100,port:3306,name:production},api:{base_url:https://api.example.com,timeout:30,retry:3},email:{smtp_server:smtp.example.com,sender:rpaexample.com}}# 使用配置db_hostconfig[database][host]api_timeoutconfig[api][timeout]8.3 数据缓存# 用字典做缓存避免重复查询cache{}defget_product_info(product_id):# 先查缓存ifproduct_idincache:returncache[product_id]# 缓存中没有查询数据库或API# ... 查询逻辑 ...info{name:商品A,price:99.9}# 存入缓存cache[product_id]inforeturninfo8.4 数据映射转换# 状态码到中文描述的映射status_map{0:待处理,1:处理中,2:已完成,3:已取消,4:异常}# 批量转换orders[{id:A001,status:0},{id:A002,status:2},{id:A003,status:4},]fororderinorders:order[status_text]status_map.get(order[status],未知)九、避坑清单坑1遍历时修改字典# 错误遍历时删除会报RuntimeErrord{A:1,B:2,C:3}forkeyind:ifd[key]2:deld[key]# RuntimeError!# 正确先记录要删除的键to_delete[kfork,vind.items()ifv2]forkinto_delete:deld[k]坑2字典无序Python 3.6前Python 3.7字典保持插入顺序。但如果你用Python 3.6或更早版本字典是无序的。如果顺序重要用collections.OrderedDict。坑3可变对象不能做键# 列表不能做键不可哈希d{[1,2]:value}# TypeError# 元组可以d{(1,2):value}# OK坑4浅拷贝问题d1{list:[1,2,3]}d2d1.copy()# 浅拷贝d2[list].append(4)print(d1)# {list: [1, 2, 3, 4]} — 原字典也变了# 深拷贝importcopy d2copy.deepcopy(d1)坑5get的默认值陷阱# 默认值是可变对象时有坑d{}valued.get(key,[])# 每次调用都创建新列表value.append(1)# d仍然是空字典value是[1]# 如果想把默认值也存入字典d.setdefault(key,[]).append(1)# d {key: [1]}

相关新闻

Claude技能库开发指南:从架构设计到生产部署的AI智能体实践

Claude技能库开发指南:从架构设计到生产部署的AI智能体实践

在 AI 智能体开发领域,Claude 技能库(Skills)已经成为构建专业级 AI 应用的重要基础设施。与传统的提示词工程不同,技能库通过结构化、可复用的方式封装特定领域的专业知识,让开发者能够快速构建出具备专业能力的 AI 智…

2026/7/14 17:50:46阅读更多 →
AI骨骼绑定工具UniRig:3分钟实现3D角色智能绑定与动画制作

AI骨骼绑定工具UniRig:3分钟实现3D角色智能绑定与动画制作

1. 项目概述:当AI遇见骨骼绑定,3D动画的“工业革命”如果你和我一样,在3D动画制作这条路上摸爬滚打过几年,那你一定对“骨骼绑定”这四个字又爱又恨。爱的是,它是赋予模型灵魂、让静态角色“活”起来的关键一步&#x…

2026/7/14 17:45:46阅读更多 →
ChatGPT话术点击率暴跌?揭秘直播间用户注意力衰减曲线与4.8秒话术锚点设计法则

ChatGPT话术点击率暴跌?揭秘直播间用户注意力衰减曲线与4.8秒话术锚点设计法则

更多请点击: https://codechina.net 第一章:ChatGPT话术点击率暴跌?揭秘直播间用户注意力衰减曲线与4.8秒话术锚点设计法则 直播场景中,用户平均停留时长正以毫秒级速度坍塌——眼动追踪实验显示,73.6%的观众在进入直…

2026/7/14 17:45:46阅读更多 →
2026 低成本小程序商城平台实测:好用又安全的平台推荐

2026 低成本小程序商城平台实测:好用又安全的平台推荐

2026 低成本小程序商城平台实测:好用又安全的平台推荐做线上商城、私域带货的中小商家和个体创业者,大多都栽过平台选型的坑。要么平台年费高昂、隐性收费不断,拉高运营成本;要么后台操作复杂,零基础上手难度大&#x…

2026/7/14 18:55:55阅读更多 →
TB67H480FNG与PIC18F4620在工业运动控制中的优化方案

TB67H480FNG与PIC18F4620在工业运动控制中的优化方案

1. 项目概述:TB67H480FNG与PIC18F4620的黄金组合 在工业自动化和精密运动控制领域,电机驱动系统的稳定性和精度直接决定了整个项目的成败。我最近在一个自动化检测设备项目中采用了东芝TB67H480FNG驱动芯片与Microchip PIC18F4620微控制器的组合方案&…

2026/7/14 18:55:55阅读更多 →
【2013-11-19】【转】字符串匹配的Boyer-Moore算法

【2013-11-19】【转】字符串匹配的Boyer-Moore算法

[历史归档] 本文原发布于 cstriker1407.info 个人博客,内容为历史存档,仅供参考。 发布时间: 2013-11-19 | 标题:【转】字符串匹配的Boyer-Moore算法 | 分类: 编程 / 数据结构与算法 &…

2026/7/14 18:55:55阅读更多 →
球谐函数实战指南:从原理到Python实现3D光照渲染

球谐函数实战指南:从原理到Python实现3D光照渲染

1. 项目概述:为什么是球谐函数?如果你正在捣鼓3D渲染、游戏开发或者计算机视觉,尤其是最近火热的3D高斯泼溅这类神经渲染技术,那你大概率已经听过“球谐函数”这个名字了。它听起来高深莫测,像是数学系的专属玩具&…

2026/7/14 18:55:55阅读更多 →
生命涌现的小龙虾技能之【Elderly Sleep Nightmare / Startle Detection | 老年人睡眠中间惊醒/梦魇行为识别】简介

生命涌现的小龙虾技能之【Elderly Sleep Nightmare / Startle Detection | 老年人睡眠中间惊醒/梦魇行为识别】简介

🌙 Elderly Sleep Nightmare / Startle Detection | 老年人睡眠中间惊醒/梦魇行为识别 智能分析中枢 图片/视频智能分析 结构化报告 历史报告云端查询 🧭 技能概览 | Overview 模块内容🏷️ 技能名称老年人睡眠中间惊醒/梦魇行为识别&…

2026/7/14 18:55:55阅读更多 →
从“农家乐”到“模块化生态农庄”:大学生创业如何用工业化思维重塑乡村文旅

从“农家乐”到“模块化生态农庄”:大学生创业如何用工业化思维重塑乡村文旅

1. 从农家乐到模块化生态农庄的转型逻辑十年前我第一次去郊区农家乐的经历至今记忆犹新:简陋的砖瓦房,几张油腻的餐桌,院子里散养着几只土鸡,菜单上除了土鸡汤就是炒鸡蛋。这种粗放式的经营模式,正是当前大多数农家乐的…

2026/7/14 18:50:54阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/14 4:56:14阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/14 2:55:05阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/14 6:17:41阅读更多 →
【Cursor数据库安全红线】:自动执行SQL前必须校验的6项权限策略,金融级项目已强制落地

【Cursor数据库安全红线】:自动执行SQL前必须校验的6项权限策略,金融级项目已强制落地

更多请点击: https://intelliparadigm.com 第一章:Cursor数据库安全红线概览 Cursor 作为一款基于 AI 的智能编程助手,其本地数据库(SQLite 存储)承载着用户代码片段、会话历史、自定义规则及敏感上下文信息。理解其安…

2026/7/14 0:03:18阅读更多 →
【Notion AI写作避坑白皮书】:基于127份真实用户失败案例,总结6大致命误用陷阱

【Notion AI写作避坑白皮书】:基于127份真实用户失败案例,总结6大致命误用陷阱

更多请点击: https://codechina.net 第一章:Notion AI写作辅助的底层能力边界认知 Notion AI 并非通用大语言模型的直接封装,而是基于 Llama 系列与自研微调模型构建的轻量化推理服务,其输入上下文窗口严格限制在 8192 token&…

2026/7/14 0:03:18阅读更多 →
AI Agent数据越界行为如何被精准溯源?——基于GDPR/CCPA双合规的5层审计框架实战指南

AI Agent数据越界行为如何被精准溯源?——基于GDPR/CCPA双合规的5层审计框架实战指南

更多请点击: https://kaifayun.com 第一章:AI Agent数据越界行为的合规性挑战与溯源必要性 AI Agent在自主执行任务过程中,可能因提示注入、上下文污染或权限配置缺陷,无意或有意访问、缓存、传输受保护数据(如PII、G…

2026/7/14 0:03:18阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/14 15:07:30阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/14 4:45:36阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/14 2:42:17阅读更多 →