2016-02-14 4 views
1

У меня есть Dict, который отформатирован в {int:[]}python-Как решить KeyError: 2?

Когда я пытаюсь установить значение пары ключ-значение, где список значений NULL, я получил KeyError: 2

tags = {} 
tags.setdefault(int,[]) 
for tag_id in (db.session.query(PostTagRel).filter(PostTagRel.id == post_id).first().tag_id.split(',')): 
      tag = db.session.query(Tag).filter(Tag.tag_id == tag_id).first().tag_name 
      tags[post_id].append(tag) 

Что я должен делать?

+1

'setdefault' значение по умолчанию устанавливает для конкретного ключа, а не для типа ключа. «Defaultdict» может служить вашим целям: 'from collections import defaultdict'' d = defaultdict (lambda: []) ' – schwobaseggl

+0

Во-первых, вы не должны переопределять зарезервированные имена, такие как' '' dict''', поскольку вы не сможете для дальнейшего использования оригинального объекта. Во-вторых, '' 'dict. [0] .append (1)' '' синтаксически недействителен –

+1

Пожалуйста, отредактируйте свой вопрос, чтобы показать * действительный * код, который вы использовали, и трассировку. –

ответ

2

Для того, чтобы установить общее значение по умолчанию для всех клавиш, вы можете использовать defaultdict:

from collections import defaultdict 

d = defaultdict(list)  
d[0].append(1)