NameError: 名称 ‘defaultdict’ 未在 Python 中定义
NameError: name ‘defaultdict’ is not defined in Python
“NameError: name ‘defaultdict’ is not defined” 发生在我们忘记defaultdict
在使用前导入该类时。defaultdict
要解决该错误,请从collections
模块中导入
类。
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
模块中导入
类。