10

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)

したがって、グループ名をキーとして、関連するすべてのオブジェクトのリストを値として使用して、このディクショナリ内の 1 つのグループに属するすべてのエントリを収集したいと考えています。

しかし、上記のコードは AttributeError を発生させます:

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

何らかの理由で、値がリストとして認識されないように見えますか?

辞書または defaultdict で値として使用されるリストに追加する方法はありますか? (以前に通常の辞書でこれを試したことがありますが、同じエラーが発生しました。)

助けてくれてありがとう!

4

1 に答える 1

20

試す

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

appendこれは、どのリストでも使用する方法と同じです。appendは何も返さないので、結果を に代入するdic[mygroup]と に変わりますNone。次に追加しようとすると、エラーが発生します。

于 2012-09-07T11:33:43.787 に答える