다음과 같이 작성된 코드가 있습니다.왜 파이썬 사전은 이런 식으로 행동합니까?
class Invite(models.Model):
STATE_UNKNOWN = 0
STATE_WILL_PLAY = 1
STATE_WONT_PLAY = 2
STATE_READY = 3
STATE_CHOICES = ((STATE_UNKNOWN, _("Unknown")),
(STATE_WILL_PLAY, _("Yes, I'll play")),
(STATE_WONT_PLAY, _("Sorry, can't play")),
(STATE_READY, _("I'm ready to play now")))
...
def change_state(self, state):
assert(state in dict(Invite.STATE_CHOICES))
이 코드는 원하는대로 작동하지만이 방법으로 왜 작동하는지 궁금합니다. 이 방법으로 작동한다는 것은 인정되지만 매우 편리하지만 어째서 그런가에 대한 근본적인 철학을 놓치고있는 것처럼 보입니다.
다음과 같은 것을 시도해보십시오.
dict((1,2,3), (2,2,3), (3,2,3))
ValueError: dictionary update sequence element #0 has length 3; 2 is required
xxx43
{1: (2,3), 2: (2,3), 3: (2,3)}
와 같은 dict을 만들지 않습니다. 따라서 일반적인 패턴은 튜플의 첫 번째 부분을 키로, 나머지는 값으로 사용합니다. 이 동작을 일으키는 몇 가지 근본적인 토대가 있습니까, 아니면 단지 잘되었을 때 편리 할 것입니다 ....
이 보면 정말 어렵다. 왜 튜플 (tuple)의 튜플 (tuple)로 구성하지 않고 처음에 사전을 정의하지 않았습니까? –
장고 선택 필드는 2 튜플의 순서 여야합니다. 그것에 대해 할 수있는 일은별로 없습니다. – boatcoder