2012-09-07 45 views
7

Tôi đang cố gắng để thêm đối tượng vào danh sách đó là những giá trị trong một defaultdict:thêm vào danh sách trong 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) 

Vì vậy, tôi muốn thu thập tất cả các mục mà thuộc về một nhóm trong từ điển này, sử dụng nhóm tên là khóa và danh sách tất cả các đối tượng có liên quan dưới dạng giá trị.

Nhưng đoạn mã trên đặt ra một AttributeError:

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

Vì vậy, nó trông giống như đối với một số lý do, các giá trị được không được coi là danh sách?

Có cách nào để thêm vào danh sách được sử dụng làm giá trị trong từ điển hoặc mặc định không? (Tôi đã thử điều này với một dict bình thường trước đây, và có cùng một lỗi.)

Cảm ơn bạn đã giúp đỡ! Lastalda

Trả lời

14

Hãy thử

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

Đó là giống như cách bạn sử dụng append trong danh sách bất kỳ. append không trả lại bất cứ điều gì, vì vậy khi bạn gán kết quả cho dic[mygroup], nó sẽ chuyển thành None. Lần tới khi bạn cố gắng gắn thêm vào nó, bạn sẽ gặp lỗi.

Các vấn đề liên quan