2012-09-07 17 views
7

Estoy tratando de agregar objetos a las listas que son valores de una defaultdict:anexar a la lista de 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) 

por lo que quiero para recoger todas las entradas que pertenecen a un grupo en este diccionario, utilizando el grupo nombrar como clave y una lista de todos los objetos relacionados como valor.

Pero el código anterior plantea una AttributeError:

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

lo que parece que, por alguna razón, los valores no son reconocidas como las listas?

¿Hay alguna manera de anexar a listas usadas como valores en un diccionario o defaultdict? (He intentado esto con un dict normal antes, y he recibido el mismo error.)

¡Gracias por cualquier ayuda! Lastalda

Respuesta

14

Trate

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

Esa es la misma manera que utiliza append en ninguna lista. append no devuelve nada, por lo que cuando asigna el resultado a dic[mygroup], se convierte en None. La próxima vez que intente agregarlo, obtendrá el error.