[英]Initialize dictionary items as defaultdict(list)
I'm trying to simplify this code: 我正在尝试简化此代码:
final_data_row = dict()
final_data_row['param1'] = []
final_data_row['param2'] = []
final_data_row['param3'] = []
final_data_row['param4'] = []
into something like this: 变成这样的东西:
from collections import defaultdict
final_data_row = dict()
for param in ['param1', 'param2', 'param3', 'param4']:
final_data_row[param] = defaultdict(list)
but when I wanted to add something to one of the dictionary items, like so: 但是当我想向其中一个字典项添加内容时,如下所示:
final_data_row['param1'].append('test value')
it gives me an error: 它给我一个错误:
AttributeError: 'collections.defaultdict' object has no attribute 'append'
Both snippets aren't equivalent: the first one creates 4 entries as lists, the second one creates 4 entries as defaultdict
s. 这两个片段不相等:第一个片段创建4个条目作为列表,第二个片段创建4个条目作为defaultdict
。 So each value of the key is now a defaultdict
, can't use append
on that. 因此,密钥的每个值现在都是defaultdict
,不能在其上使用append
。
Depending on what you want to do: 根据您要执行的操作:
Define only those 4 keys: No need for defaultdict
只定义这四个键:不需要defaultdict
final_data_row = dict()
for param in ['param1', 'param2', 'param3', 'param4']:
final_data_row[param] = []
or with dict comprehension: 或dict理解:
final_data_row = {k:[] for k in ['param1', 'param2', 'param3', 'param4']}
If you want a full defaultdict
: one line: 如果要完整的defaultdict
:一行:
final_data_row = defaultdict(list)
(you can add as many keys you want, not fixed to param[1234]
keys (您可以添加任意数量的键,而不是固定于param[1234]
键
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.