我试图简化此代码:
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'
答案 0 :(得分:2)
两个片段都不相同:第一个片段创建4个条目作为列表,第二个片段创建4个条目defaultdict
s。因此,密钥的每个值现在都是defaultdict
,无法使用append
。
取决于您想要做什么:
仅定义那4个键:不需要defaultdict
final_data_row = dict()
for param in ['param1', 'param2', 'param3', 'param4']:
final_data_row[param] = []
或dict comprehension:
final_data_row = {k:[] for k in ['param1', 'param2', 'param3', 'param4']}
如果你想要一个完整的defaultdict
:一行:
final_data_row = defaultdict(list)
(您可以添加任意数量的键,而不是固定到param[1234]
键