字典 (dictionary) 的默认值
字典 (dictionary) 的默认值
摘录自《利用 Python 进行数据分析》第三版 3.1.4.2
通常,如果想要获得字典里对应键的值,但是我们先前并不确定这个键是否存在于字典中的话,代码会这样写
if key in some_dict:
value = some_dict[key]
else:
value = default_value
但是,字典的 get 方法和 pop 方法可以添加一个默认值的参数,使得上述的代码可以被简化为
value = some_dict.get(key, default_key)
带有默认值的 get 方法会在 key 参数不是字典的键时返回 None,而 pop 会抛出异常。
再有这样一个场景,我们想将字词组成的列表根据首字母分类为包含列表的字典。通常来讲,我们会这样组织代码
words=['apple', 'bat', 'bar', 'atom', 'book']
by_letter = {}
for word in words:
letter = word[0]
if letter not in by_letter:
by_letter[letter] = [word]
else:
by_letter[letter].append(word)
而使用字典的 setdefault 方法,如果键不存在于字典中,将会添加键并将值设为默认值。上面的代码可以简写为
words=['apple', 'bat', 'bar', 'atom', 'book']
by_letter = {}
for word in words:
letter = word[0]
by_letter.setdefault(letter,[]).append(word)
除此之外,内建的 collections 模块有一个 defaultdict 类,可以再将上述代码简化。
想要生成符合要求的字典,可以向 defaultdict 中传入类型或能在各位置生成默认值的函数。
from collections import defaultdict
words=['apple', 'bat', 'bar', 'atom', 'book']
by_letter = defaultdict(list)
for word in words:
by_letter[word[0]].append(word)
分类:
【Python学习笔记】
标签:
python
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!
· 用 C# 插值字符串处理器写一个 sscanf