【AI总结】【Python每日小技巧】别再踩坑!5种姿势教你优雅地修改字典值

Python - Dict(字典) 目录 字典的创建 字典的访问 ( List转换 ) 字典的遍历 字典的添加 字典的合并 字典的删除(清空) 字典的其他操作 实例(字符频率统计) 字符串转字典(eval) "字典列表"的排序 dict:dictionary item:项/项目 default:[计]缺省、默认 连接:【列表中出现次数最多的元素】 一:字典的创建 字典的创建方式dict1 = { ... 阅读详情

【Python每日小技巧】别再踩坑!5种姿势教你优雅地修改字典值


前言

在 Python 里,字典(dict)堪称“瑞士军刀”,但不少初学者(甚至老鸟)都会在“如何正确修改值”这件事上翻车:

  • KeyError 直接劝退?
  • 想把值加 1 结果把整个列表给覆盖了?
  • 想批量改值却写了三层 for 循环?

今天这篇文章,就把我踩过的坑一次性打包给你,带你从“修字典”进化到“优雅地修字典”。读完你可以直接收藏当 cheat-sheet 用!


1. 直接赋值:最基础,也最危险

user = {"name": "Alice", "age": 25}
user["age"] = 26          # 存在就覆盖
user["city"] = "Shanghai" # 不存在就新建

⚠️ 注意:如果键不存在,会直接新增,而非报错。
很多 bug 就是因为“以为会报错,结果悄悄插进去了”。


2. 先查后改:防御式写法

if "age" in user:
    user["age"] += 1
else:
    print("age 不存在,跳过")

优点:安全。
缺点:两行起步,代码膨胀。


3. dict.get + 赋回:一行解决“不存在就跳过”

user["age"] = user.get("age", 0) + 1

利用 get 给默认值,再写回。
小技巧:对计数器、累加器特别香。


4. setdefault:初始化 + 修改二合一

# 统计字符出现次数
from collections import defaultdict

counter = {}
for ch in "abracadabra":
    counter[ch] = counter.setdefault(ch, 0) + 1
print(counter)
# {'a': 5, 'b': 2, 'r': 2, 'c': 1, 'd': 1}

setdefault 在键不存在时先插入默认值,再返回该值,省去一次 if。
如果你还没用过,强烈建议试试!


5. 批量修改:字典推导式 & update

5.1 字典推导式(推荐)

prices = {"apple": 8, "banana": 5, "pear": 6}
# 全场 9 折
prices = {k: v * 0.9 for k, v in prices.items()}

一行完成映射,可读性高。

5.2 update + 字典推导式

prices.update({k: v * 0.9 for k, v in prices.items()})

当原字典被多处引用,不想重新绑定变量名时用 update。


6. 嵌套字典怎么办?——一行代码“点”进去改

data = {"user": {"profile": {"age": 25}}}
# 想给 age + 1
from functools import reduce
import operator

def nested_set(dic, keys, value):
    reduce(operator.getitem, keys[:-1], dic)[keys[-1]] = value

nested_set(data, ["user", "profile", "age"], data["user"]["profile"]["age"] + 1)
print(data)
# {'user': {'profile': {'age': 26}}}

如果你经常操作 MongoDB 或 JSON 配置,这招能救命。


7. 性能对比小实验

随手跑个 timeit,看看谁更猛:

方法100万次耗时
if key in dict0.45 s
get + 赋值0.42 s
setdefault0.48 s

结论:差距微乎其微,可读性优先!


8. 常见错误 Top3

  1. 误用 dict[key]++
    Python 没有 ++,请用 dict[key] += 1。

  2. 遍历中直接修改尺寸

    for k in d:
        if some_condition(k):
            del d[k]  # RuntimeError: dictionary changed size during iteration
    

    正确姿势:先收集要删的键,再批量 del。

  3. 把可变对象当默认值

    def func(d={}): ...
    

    默认字典会跨调用共享,踩一次坑记一辈子。


9. 总结速查表

场景推荐写法
键一定存在d[k] = new_v
键可能不存在,需默认值d[k] = d.get(k, default) + delta
初始化并修改d[k] = d.setdefault(k, 0) + 1
批量映射{k: f(v) for k, v in d.items()}
嵌套结构reduce + getitem 或 dpath 库

10. 彩蛋:Python 3.9+ 新语法

合并两个字典只需 |:

defaults = {"host": "localhost", "port": 3306}
custom = {"port": 5432}
config = defaults | custom  # {'host': 'localhost', 'port': 5432}

MT6826SGT-STD-R绝对值编码器深度解析:精准控制+灵活编程 本文详细介绍MT品牌的高性能绝对值编码器——MT6826SGT-STD-R。:区别于传统增量式编码器,绝对值输出无需掉电归零,开机即获准确位置数据。的核心优势,结合应用场景与选型指南,为工程师提供一站式解决方案参考。MT6826SGT-STD-R是一款专为工业级精密控制设计的。该设备广泛应用于伺服系统、机器人关节校准、自动化产线等领域。:15bit分辨率实现细腻的位置反馈;:通过专用编写器可自定义多项关键参数;:优化电路设计,适应复杂电磁环境。 阅读详情

相关推荐

python知网爬虫论文pdf下载+立即可用(动态爬虫)

python实现动态爬虫知网论文,搜索+自动翻页+下载 收集数据利器

Braylon的博客 5377

python怎么使用数据库_Python如何实现数据库连接

如何进行数据库连接?(实例解析)在这篇文章之中我们来了解一下关于python数据库连接的相关知识,有些朋友可能是刚刚接触到python这一编程语言,对这一方面不是特别的了解,在接下来这篇文章将会来带大家来了解关于数据库连接相关知识。数据库连接了解之前需要确定的相关事项:1.您已经创建了数据库 TESTDB.2.在TESTDB数据库中您已经创建了表 EMPLOYEE3.EMPLOYEE表字段为 FI...

weixin_39797264的博客 338

深度学习之基于Pytorch手指静脉识别系统(

一、项目背景与目标手指静脉识别技术是一种新兴的生物特征识别技术,它依据人类手指中流动的血液可吸收特定波长的光线这一科学原理,利用手指内的静脉分布图像来进行身份识别。与传统的生物识别技术(如指纹识别)相比,手指静脉识别技术具有不易伪造、识别精度高、非接触性等特点,因此在安全性要求较高的场景(如金融、医疗、公安等)具有广阔的应用前景。本项目旨在利用PyTorch深度学习框架,构建一套高效、准确的手指静脉识别系统。

Q1744828575的博客 830

Python: 字典操作方法

注:解包方法实际上是创建一个新的字典,而不是更新原来的字典。注:推荐用解包方法修改,经测试,其他方法可能失败。方法一:无效,是按字母顺序倒序排的。循环字典,并将索引打印。

令平子的博客 2086

保姆级教程:用Multisim仿真快速上手二极管、MOSFET和IGBT的开关特性

本文提供了一份详细的Multisim仿真教程,帮助读者快速掌握二极管、MOSFET和IGBT的开关特性。通过搭建实验电路、观察波形特征和参数影响分析,深入解析了反向恢复过程、米勒平台现象和拖尾电流效应。适合电力电子初学者和工程师通过仿真建立直观理解,提升电路设计能力。

weixin_29290863的博客 496

AIGC实战指南:从提示词到工作流,掌握AI内容生成核心技能

人工智能生成内容(AIGC)作为当前AI技术的重要应用领域,其核心原理基于大语言模型(LLM)对海量数据的学习与模式识别。这项技术的价值在于将复杂的创作过程自动化,显著提升内容生产效率与创意实现的多样性。在实际应用中,AIGC已广泛渗透至文本创作、图像设计、音频合成及视频生成等多个场景,成为数字内容生产的重要工具。要高效运用AIGC,关键在于掌握提示词工程与模型微调等核心技能。例如,通过结构化提示词设计,可以精确引导模型生成符合预期的专业周报;而选择合适的微调模型,则能大幅提升图像生成的风格控制力与输出质量

weixin_26808439的博客 371

Python中dict的增删改

字典是可变序列,面试经常会问到。 字典dict是key-value的形式。 使用场景常用的有四种: 1、新增key-value 2、修改已有的key的valuezh

wangjun491280的博客 1052

粒子滤波在基于误差状态量的INS/GNSS组合导航中的使用技巧-On Particle Filter based Error-State INS/GNSS Intergrated Navigation

本文面向以15维惯导(INS)误差为状态量,3维位置误差为量测量的INS/GNSS组合导航系统,​在西工大严恭敏老师的开源工具箱中PF相关库函数基础上实现基于粒子滤波(PF)的惯导误差状态量的递推估计,设计了粒子重置环节并强调了其在本特定场景下的重要性。

I33D33I的博客 1742

python 字典dict修改、新增、删除键值

python

shanshanzhong123的博客 4008

fast-lio系列改进版本

2.回环检测的优化结果,更新到FAST-LIO2的当前帧位姿中,幷进行ikdtree的重构,进而更新submap。其它的效果还不清楚,实测lio部分稳定性很好。用fast-lio_slam就很稳定。融合了fast-lio2和sc-pgo,两部分分开运行,SC-PGO从FAST-LIO2节点获取里程计和激光雷达点云主题。的作者kim在FAST-LIO2的基础上,添加SC-PGO模块,通过加入ScanContext全局描述子,进行回环修正,SC-PGO模块与FAST-LIO2解耦,非常方便,很优秀的工作。

z1872385的博客 3187

看完就会!手把手教您如何正确开启飞牛Nas 虚拟机的 IOMMU 硬件直通,让虚拟机的性能飙升!

看完就会!手把手教您如何正确开启飞牛Nas 虚拟机的 IOMMU 硬件直通,让虚拟机的性能飙升!

XiaoqiangClub的博客 1万+

python疑难杂症(9)---python的数据类型字典(dict)的创建、访问、修改、删除等方法汇总

Python中的字典主要有以下一些特点: 无序性:字典中的元素没有固定的顺序,不能通过索引来访问元素。 可变性:可以向字典中添加、修改或删除元素。 唯一键:字典中的键必须是唯一的,如果添加了相同的键,则后面的键值对会覆盖前面的键值对。 值可重复性:在字典中的键值对中,键是唯一的,而值是可以重复的,即同一值可以跟到不同的键值后。

m0_59917021的博客 2167

Matlab基于PSO-MVMD粒子群算法优化多元变分模态分解

Matlab基于PSO-MVMD粒子群算法优化多元变分模态分解

机器学习之心的博客,关注并私信文章链接,获取对应文章源码和数据。 515

OpenClaw本地部署实战:穿透信息污染构建可审计AI Agent环境

AI Agent框架是当前大模型应用落地的核心基础设施,其本质是任务调度与技能编排系统,而非简单的大模型调用封装。理解其Runtime-Skill-Storage三层架构原理,掌握Docker Compose统一纳管MongoDB与Redis等强依赖组件的技术逻辑,是保障Agent系统低延迟、高可用的关键。OpenClaw作为轻量级代表,强调可验证性与可审计性,要求开发者绕过虚假中文官网和虚构版本号(如V2026.5.20),直连GitHub官方v0.9.3源码,通过SHA256校验、Git Tag签名验证

weixin_34393428的博客 442

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

SHAP实战指南:树模型可解释性工程落地与性能调优

SHAP(Shapley Additive Explanations)是一种基于合作博弈论的模型无关解释方法,其核心原理源自Shapley值理论,确保特征贡献归因满足效率性、对称性等数学公理。相比LIME或PDP等局部解释技术,SHAP具备严格的理论保障和可验证性,尤其在金融风控、医疗AI等强监管场景中,成为满足合规审计与业务质询的关键技术支撑。通过TreeSHAP等高效实现,它支持XGBoost、LightGBM等主流树模型的毫秒级局部解释,并能反向驱动特征工程优化与数据质量治理。本文聚焦SHAP在生产环

weixin_30596343的博客 300

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Pandas多维聚合实战:金融场景下的生产级groupby模式

多维聚合是数据分析中连接原始数据与业务决策的关键技术,其核心在于对同一数据集按多个维度、多种统计口径进行协同计算。它既不是简单求和或平均,也不局限于单一函数调用,而是融合分组逻辑、时间窗口、自定义规则与结果可解释性的系统工程。在银行、风控、电商等强业务驱动领域,典型需求包括多列异构统计(如金额看均值、手续费看极差)、滚动窗口趋势分析(7日均值防突发噪声)、扩展窗口累计指标(YTD客户价值)以及多级分组透视(区域-品类矩阵)。本文聚焦pandas中groupby().agg()、rolling()、expan

congdi7904的博客 335

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

map/filter/reduce:从命令式到声明式的数据处理范式

map、filter、reduce 是函数式编程中三大基础高阶函数,本质是将数据处理抽象为‘映射’‘筛选’‘归约’三类数学操作,依托纯函数特性实现无状态、可组合、易测试的声明式表达。它们并非语法糖,而是对传统 for 循环+if 嵌套的工程替代方案,在数据清洗、ETL 流水线、配置校验等场景中显著提升逻辑清晰度与故障隔离能力。结合惰性求值、幺元初始化、类型契约等机制,三者共同构成轻量但完备的数据流处理原语,广泛应用于 Python 数据工程与算法服务开发。

weixin_33859231的博客 337

Python字典和集合操作指南:创建、获取值、修改和删除键值对,复制和遍历方法全解析

本文详细介绍了Python中的字典和集合操作。首先,我们学习如何创建字典和集合,并探讨了获取、修改和删除字典中的键值对的方法。我们还介绍了字典的复制和遍历技巧,包括使用keys()、values()和items()方法。随后,我们学习了集合的各种操作,如交集、并集、差集和异或集等。通过阅读本文,您将全面掌握Python中字典和集合的使用方法,为您的编程工作提供有力支持。

qq_41308872的博客 8494

python修改字典的值(update map value)

mydict.update({'newkey':'newvalue'}) 转载于:https://www.cnblogs.com/Raul2018/p/10144580.html

weixin_30641999的博客 2218

python dict的使用

情景: 有 A(parsed_pvlog) B(pdetail) 两个文件, 当A.uuid==B.uuid时,将A文件中某一个字段(cpssrc)加到B文件中 方法一: A B 文件 读一行全字段转为字典作为值。两层dict嵌套。{uu的值:{一行转为dict}} 遍历A的k v ,如果db.get(k),db[k]['cpssrc']=v.get('cpssrc','') A

zhanggf的博客 1620

python chdir_python os.chdir()定义及作用分析(实例解析)

今天这篇文章我们来了解一下python os.chdir,在接下来的文章之中我们将会介绍python之中的os.chdir() 介绍它的定义以及其所具备的作用和用途。概述os.chdir() 方法用于改变当前工作目录到指定的路径。语法chdir()方法语法格式如下:os.chdir(path)参数path -- 要切换到的新路径。返回值如果允许访问返回 True , 否则返回False。实例以下实...

weixin_39866857的博客 303

替换python字典中的key值

比如有一个 a = {‘a’: 1} 希望变为 a = {‘b’ :1} 即:在保留value不变的情况下,替换key值目前能想到的实现方案是 a[‘b’] = a.pop(‘a’)

Billow_Tau 2万+

python输入文字、成为字典_python怎么把值输入字典

Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。一、创建字典字典由键和对应值成对组成。字典也被称作关联数组或哈希表。基本语法如下:dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}也可如此创建字典dict1 = { 'abc': 456 }dict2 = { 'abc': 123, 98...

weixin_39611546的博客 1609

Python编程语言下使用dict(字典)和set(集合)

字典 dict:  1,字典是一种可变的容器,可以存储任意类型的数据  2,字典中每个数据都是用‘键’(key)进行索引,而不像序列可以用下标进行索引  3,字典的数据没有先后顺序关系,字典的存储是无序的  4,字典中的数据以键(key)-值(value)队进行映射存储  5,字典的键不能重复,且只能用不可变类型作为字典的键。字典的字面值表示方式;  用{}括起来,以冒号(:)分割键-值对,各键值...

weixin_42130167的博客 7376

python中词典的values值的修改或新增KEY

在python中,对词典的值,可以新增,或者修改,如下:

hcsdf123的博客 1万+

Python dict字典基本操作(包括添加、修改、删除键值对

由于字典属于可变序列, 所以我们可以任意操作字典中的键值对(key-value)。 Python 中,常见的字典操作有以下几种: 向现有字典中添加新的键值对。 修改现有字典中的键值对。 从现有字典中删除指定的键值对。 判断现有字典中是否存在指定的键值对 初学者要牢记, 字典是由一个一个的 key-value 构成的, key 是找到数据的关键, Python 对字典的操作都是通过 key 来完成的。 Python字典添加键值对 a = {'数学':95} print(a)#{'数学'

weixin_44769957的博客 9257
上一篇: 【AI总结】别再用 = 了!Python 复制字典的 6 种姿势,你 pick 谁?
下一篇: 【AI总结】Python ORM 入门指北 —— 用 Peewee 写增删改查
荔枝吻
博客等级 码龄5年 533粉丝 161原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝吻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值