2
OpenGL을 사용하여 실제로 영리하고 모든 함수와 변수를 사전에 논리적 순서로 저장하고 나중에 기능적 순서로 호출하려고했습니다. 내가사전 키로서의 기능, unhashable 타입
"/Users/lego90511/PycharmProjects/OpenGLDummy/opengl_shortcuts.py", line 9, in complex_draw_square
glPopMatrix: "E",
TypeError: unhashable type
내가이 변수 조합 기능이 상관없이받을 파일 얻을이 작업을 수행 할 때
def complex_draw_square(width, height, x=0, y=0, z=0, x_angle=0, y_angle=0, z_angle=0,):
action_dict = {
glPopMatrix: "E",
glRectf: (0, 0, width, height),
glTranslatef: (0, -height, 0),
glRotatef: (x_angle, y_angle, z_angle, 1),
glTranslatef: (x, y + height, z),
glPushMatrix: "E"
}
return action_dict
문제이다. 별난 문제는 터미널에서 맞춤 함수를 사용하여 이것을 시도한다는 것입니다.
def sum(x,y):
return x + y
d = {sum: (1, 2)}
for f in d.keys():
print f(*d[f])
>>>3
그리고이 방법이 효과적입니다. 그럼 왜 다른 사람이 일하지 않습니까?
"가게 [...] 논리적 인 순서에 사전에"
왜 목록 또는 대신 튜플을 사용하지 마십시오. 사전에는 순서가 없습니다. – NPE파이썬 사전에는 순서가 없다는 것을 알고 있습니다 *, 맞습니까? –
내 머리 뒤에서 나는 해싱 충돌을 다루는 것이 있다고 생각했으나, 논쟁을 위해 no라고 말하자. dict.keys()는 예상 한 순서대로 키를 계속 내뱉습니다. – EasilyBaffled