将字典项初始化为defaultdict(list)

2024-06-28 19:15:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图简化这段代码:

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'

Tags: 代码fromimportdataparamcollectionsdictfinal
1条回答
网友
1楼 · 发布于 2024-06-28 19:15:45

这两个代码段是不等价的:第一个代码段创建4个条目作为列表,第二个代码段创建4个条目作为defaultdicts。所以现在键的每个值都是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]

相关问题 更多 >