欢迎来到徐庆高(Tea)的个人博客网站
磨难很爱我,一度将我连根拔起。从惊慌失措到心力交瘁,我孤身一人,但并不孤独无依。依赖那些依赖我的人,信任那些信任我的人,帮助那些给予我帮助的人。如果我愿意,可以分裂成无数面镜子,让他们看见我,就像看见自己。察言观色和模仿学习是我的领域。像每个深受创伤的人那样,最终,我学会了随遇而安。
当前位置: 日志文章 > 详细内容

Python基础语法中defaultdict的使用小结

2025年04月12日 Python
python的defaultdict是collections模块中提供的一种特殊的字典类型,它与普通的字典(dict)有着相似的功能,但有一个关键的不同点:当访问一个不存在的键时,defaultdic

python的defaultdict是collections模块中提供的一种特殊的字典类型,它与普通的字典(dict)有着相似的功能,但有一个关键的不同点:当访问一个不存在的键时,defaultdict不会抛出keyerror异常,而是会自动为该键创建一个默认值。这种特性使得在处理需要初始化新键的情况时更加方便。

创建defaultdict要使用defaultdict,首先需要从collections模块导入它:

from collections import defaultdict

然后可以创建一个defaultdict实例,传入一个可调用对象作为default_factory参数。
这个可调用对象决定了当访问不存在的键时应该返回的默认值类型。
例如:

  • 使用int作为default_factory将返回整数0
  • 使用list作为default_factory将返回空列表[]
  • 使用set作为default_factory将返回空集合set()
  • 使用自定义函数作为default_factory将根据该函数的返回值来确定默认值。

示例1

from collections import defaultdict

bag = ['apple', 'orange', 'cherry', 'apple','apple', 'cherry', 'blueberry']
count = defaultdict(int)  # 使用int作为default_factory
print(f"\n > > > > > > count:\n {count}")
print(f"\n > > > > > > type(count):\n {type(count)}")

for fruit in bag:
    count[fruit] += 1
print(f"\n > > > > > > count:\n {count}")

输出:

 > > > > > > count:
 defaultdict(<class 'int'>, {})

 > > > > > > type(count):
 <class 'collections.defaultdict'>

 > > > > > > count:
 defaultdict(<class 'int'>, {'apple': 3, 'orange': 1, 'cherry': 2, 'blueberry': 1})

在这个例子中,对一个不存在的键进行操作时,defaultdict会自动为该键分配一个默认值0,并允许直接对其进行递增操作。

示例2

from collections import defaultdict

names = [('group1', 'alice'), ('group2', 'bob'), ('group1', 'charlie')]
grouped_names = defaultdict(list)
print(f"\n > > > > > > grouped_names:\n {grouped_names}")
print(f"\n > > > > > > type(grouped_names):\n {type(grouped_names)}")

for group, name in names:
    grouped_names[group].append(name)

print(f"\n > > > > > > grouped_names:\n {grouped_names}")

输出:

 > > > > > > grouped_names:
 defaultdict(<class 'list'>, {})

 > > > > > > type(grouped_names):
 <class 'collections.defaultdict'>

 > > > > > > grouped_names:
 defaultdict(<class 'list'>, {'group1': ['alice', 'charlie'], 'group2': ['bob']})

在这个例子中,根据第一个元素对名字进行了分组。如果使用普通字典,则需要额外的逻辑来检查和初始化每个新组。

到此这篇关于python基础语法中defaultdict的使用小结的文章就介绍到这了,更多相关python defaultdict内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!