首页 > 后端开发 > Python教程 > 解释Python中的defaultdict

解释Python中的defaultdict

Susan Sarandon
发布: 2024-12-17 12:24:26
原创
739 人浏览过

Explaining defaultdict in Python

用例

此页面的目的?是为了解释Python的collections模块中的defaultdict的概念和用法,特别是想知道这个奇怪的名字。它的灵感来自 David Baezley 的 Advanced Python Mastery,请参阅 ex_2_2 >收藏。

默认字典:

  • 为缺失的键提供默认值
  • 通过自动初始化密钥来避免 KeyError
  • 因其初始化元素的默认行为而命名
  • 通过避免手动检查和插入来简化代码
  • 只有一个可调用对象(类型或函数)被传递给初始化
  • 在给定的示例中,列表用作默认工厂
  • 这意味着它会自动为丢失的键创建一个空列表
  • 并有助于有效地对数据进行分组
  • 还可以将 lambda 函数用于其他文字默认值
  • 示例:defaultdict(lambda: 0) 对于缺少的键返回 0

高级 Python 掌握中的示例代码

portfolio
[{'name': 'AA', 'shares': 100, 'price': 32.2}, {'name': 'IBM', 'shares': 50, 'price': 91.1}, {'name': 'CAT', 'shares': 150, 'price': 83.44}, {'name': 'MSFT', 'shares': 200, 'price': 51.23}, {'name': 'GE', 'shares': 95, 'price': 40.37}, {'name': 'MSFT', 'shares': 50, 'price': 65.1}, {'name': 'IBM', 'shares': 100, 'price': 70.44}]
print("### DEFAULTDICT")
from collections import defaultdict

print("#### Group data, e.g. find all stocks with the same name")
byname = defaultdict(list)
for s in portfolio:
    byname[s["name"]].append(s)
byname

# defaultdict(<class 'list'>, {'AA': [{'name': 'AA', 'shares': 100, 'price': 32.2}], 'IBM': [{'name': 'IBM', 'shares': 50, 'price': 91.1}, {'name': 'IBM', 'shares': 100, 'price': 70.44}], 'CAT': [{'name': 'CAT', 'shares': 150, 'price': 83.44}], 'MSFT': [{'name': 'MSFT', 'shares': 200, 'price': 51.23}, {'name': 'MSFT', 'shares': 50, 'price': 65.1}], 'GE': [{'name': 'GE', 'shares': 95, 'price': 40.37}]})

print('#### Find all stocks with the name "IBM"')
byname["IBM"]
# >>> [{'name': 'IBM', 'shares': 50, 'price': 91.1}, {'name': 'IBM', 'shares': 100, 'price': 70.44}]
登录后复制

Lambda 示例:

from collections import defaultdict

byname = defaultdict(lambda: 0)
print(byname["missing_key"])  # This will return 0
登录后复制

以上是解释Python中的defaultdict的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板