NameError:名称“defaultdict”未在 Python 中定义

NameError: 名称 ‘defaultdict’ 未在 Python 中定义

NameError: name ‘defaultdict’ is not defined in Python

“NameError: name ‘defaultdict’ is not defined” 发生在我们忘记defaultdict在使用前导入该类时。defaultdict要解决该错误,请从collections模块中导入
类。

nameerror 名称 defaultdict 未定义

defaultdict您可以按如下方式导入该类。

主程序
# 👇️ import defaultdict before using it from collections import defaultdict my_dict = defaultdict(list) my_dict['site'].append('bobbyhadz.com') # 👇️ defaultdict(<class 'list'>, {'site': ['bobbyhadz.com']}) print(my_dict) print(my_dict['tasks']) # 👉️ [] # 👇️ defaultdict(<class 'list'>, {'site': ['bobbyhadz.com'], 'tasks': []}) print(my_dict)

代码示例

直接从
collections
内置模块导入
defaultdict类。

或者,您可以导入整个collections模块并将
defaultdict该类作为属性访问。

主程序
import collections my_dict = collections.defaultdict(list) my_dict['site'].append('bobbyhadz.com') # 👇️ defaultdict(<class 'list'>, {'site': ['bobbyhadz.com']}) print(my_dict) print(my_dict['tasks']) # 👉️ [] # 👇️ defaultdict(<class 'list'>, {'site': ['bobbyhadz.com'], 'tasks': []}) print(my_dict)

确保您没有在 import 语句中拼错任何内容,因为类和模块的名称区分大小写。

一般来说,直接导入类和函数会更好也更易读,例如,from collections import defaultdict因为代码的读者更容易看到文件中使用了哪些类或函数。

该类采用的第一个参数defaultdict是一个返回所有键的默认值的函数。

defaultdict访问不存在的键时,该类返回指定的默认值。

如果您访问常规字典中不存在的键,则会出现KeyError
异常。

如果您必须为现有字典设置默认值,请将第二个参数传递给defaultdict()该类。

主程序
from collections import defaultdict my_dict = { 'name': 'Borislav Hadzhiev', 'id': 1, } # ✅ pass existing dictionary as second argument to defaultdict() my_dict = defaultdict(list, my_dict) my_dict['site'].append('bobbyhadz.com') # 👇️ defaultdict(<class 'list'>, {'name': 'Borislav Hadzhiev', 'id': 1, 'site': ['bobbyhadz.com']}) print(my_dict) print(my_dict['tasks']) # 👉️ [] # 👇️ defaultdict(<class 'list'>, {'name': 'Borislav Hadzhiev', 'id': 1, 'site': ['bobbyhadz.com'], 'tasks': []}) print(my_dict)

该类采用的第二个参数defaultdict是可选的,可以是字典或键值对列表。

尝试访问字典中不存在的任何键现在会返回一个列表。

您可以直接在不存在的键上使用列表方法。

结论

“NameError: name ‘defaultdict’ is not defined” 发生在我们忘记defaultdict在使用前导入该类时。defaultdict要解决该错误,请从collections模块中导入
类。