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



