附加到defaultdict中的列表

时间:2012-09-07 11:30:41

标签: python dictionary

我正在尝试将对象追加到defaultdict中的值列表:

dic = defaultdict(list)
groups = ["A","B","C","D"]

# data_list is a list of objects from a self-defined class. 
# Among others, they have an attribute called mygroup

for entry in data_list:
    for mygroup in groups:
        if entry.mygroup == mygroup:
            dic[mygroup] = dic[mygroup].append(entry)

所以我想收集属于这个字典中一个组的所有条目,使用组名作为键,并将所有相关对象列表作为值。

但是上面的代码引发了一个AttributeError:

    dic[mygroup] = dic[mygroup].append(entry)
AttributeError: 'NoneType' object has no attribute 'append'

所以看起来由于某种原因,这些值不会被识别为列表?

有没有办法附加到字典或defaultdict中用作值的列表? (我之前用普通的dict尝试过这个,并得到了同样的错误。)

感谢您的帮助!

1 个答案:

答案 0 :(得分:16)

尝试

if entry.mygroup == mygroup:
    dic[mygroup].append(entry)

这与您在任何列表中使用append的方式相同。 append不返回任何内容,因此当您将结果分配给dic[mygroup]时,它会变为None。下次尝试追加时,会出现错误。