list.append
返回None
,因为它是就地操作,并且您将其分配回dates_dict[key]
。因此,下一次dates_dict.get(key, []).append
您实际要做的是None.append
。这就是为什么它失败了。相反,您只需
dates_dict.setdefault(key, []).append(date)
但是,我们collections.defaultdict
仅出于此目的。你可以做这样的事情
from collections import defaultdict
dates_dict = defaultdict(list)
for key, date in cur:
dates_dict[key].append(date)
如果key
在字典中找不到,则会创建一个新的列表对象。
defaultdict
如果在字典中找不到关键字,则由于会创建一个新列表,因此会产生意想不到的副作用。例如,如果您只想检索键的值(该值不存在),它将创建一个新列表并返回它。