2012-01-21 2 views
-3

나는 Key Error: (0, 0)을 얻고 있습니다. 내 코드의이 부분에서 키 (x, y)가있는 표의 사전 블록을 작성하려고합니다. (0, 0) 사전에 포함되지 않는 이유를 이해가 안파이썬에서 터플을 사전 키로 사용할 때 키 오류 (0, 0)

self.block_list = {} 
for x in range(0, self.width): 
    for y in range(0, self.height): 
     self.block_list[(x, y)] 

: 다음은 내 코드입니다.

+0

'(0,0)'을 사전에 삽입하는 코드 줄은 무엇입니까? 귀하의 코드 ('self.block_list [(x, y)]')는 존재해야만하는 항목에 대한 참조입니다. 이 항목을 만들고 사전에 저장해야하는 코드는 어디에 있습니까? –

+0

'dict'은 (해시 가능) 객체와 객체의 매핑입니다. 'set'은 (해시 가능한) 객체들의 집합입니다. 후자를 원할 때 전자를 사용하고 있습니까? 'block_list'는 왜'dict'입니까? – katrielalex

답변

2

이 코드는 사전에를 추가하지 않습니다, 그것은 는 사전에서 값을 찾습니다. 사전이 비어 있으므로 KeyError이됩니다. 키에

할당 뭔가 :

self.block_list = {} 
for x in range(0, self.width): 
    for y in range(0, self.height): 
     self.block_list[(x, y)] = None 

는 이제 self.block_listNone 값으로 초기화됩니다.

5

빈 사전이므로 은 해당 키의 값인을 검색하려고합니다. 을 지정하려면에 해당 키의 값을 할당하고 대신 그렇게해야합니다.

self.block_list[(x, y)] = ... 
관련 문제