Python 将字典项初始化为defaultdict(列表)

Python 将字典项初始化为defaultdict(列表),python,dictionary,defaultdict,Python,Dictionary,Defaultdict,我试图简化此代码: final_data_row = dict() final_data_row['param1'] = [] final_data_row['param2'] = [] final_data_row['param3'] = [] final_data_row['param4'] = [] 变成这样: from collections import defaultdict final_data_row = dict() for param in ['param1', 'par

我试图简化此代码:

final_data_row = dict()
final_data_row['param1'] = []
final_data_row['param2'] = []
final_data_row['param3'] = []
final_data_row['param4'] = []
变成这样:

from collections import defaultdict

final_data_row = dict()
for param in ['param1', 'param2', 'param3', 'param4']:
    final_data_row[param] = defaultdict(list)
但是当我想在字典的某个条目中添加一些内容时,比如:

final_data_row['param1'].append('test value')
这给了我一个错误:

AttributeError: 'collections.defaultdict' object has no attribute 'append'

两个代码段并不相同:第一个代码段创建4个条目作为列表,第二个代码段创建4个条目作为
defaultdict
s。因此,键的每个值现在都是一个
defaultdict
,不能在其上使用
append

根据您想做的事情:

仅定义这4个键:不需要
defaultdict

final_data_row = dict()
for param in ['param1', 'param2', 'param3', 'param4']:
    final_data_row[param] = []
或通过听写理解:

final_data_row = {k:[] for k in ['param1', 'param2', 'param3', 'param4']}
如果需要完整的
defaultdict
:一行:

final_data_row = defaultdict(list)

(您可以添加任意数量的键,而不是固定为
param[1234]
keys

这两个代码段并不等效:第一个代码段创建4个条目作为列表,第二个代码段创建4个条目作为
defaultdict
s。因此,该键的每个值现在都是
defaultdict
,不能使用
append

根据您想做的事情:

仅定义这4个键:不需要
defaultdict

final_data_row = dict()
for param in ['param1', 'param2', 'param3', 'param4']:
    final_data_row[param] = []
或通过听写理解:

final_data_row = {k:[] for k in ['param1', 'param2', 'param3', 'param4']}
如果需要完整的
defaultdict
:一行:

final_data_row = defaultdict(list)

(您可以添加任意数量的键,而不是固定到
param[1234]
keys

只需执行
final_data\u row=defaultdict(list)
只需执行
final_data\u row=defaultdict(list)
发布后立即解决此问题!)谢谢您的帮助!发布后立即解决此问题!)谢谢您的帮助!