我已經寫了,像這樣一些代碼:爲什麼python詞典表現這種方式?
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
它不會創建一個字典,看起來像
{1: (2,3), 2: (2,3), 3: (2,3)}
所以一般模式是不是要採取元組的第一部分關鍵和其餘的價值。是否有導致這種行爲的一些基本的基礎,或者只是,如果它確實會很方便......
這是真的很難看。你爲什麼不首先定義一個字典而不是從一個元組元組構造一個字典? – 2011-03-27 18:12:53
Django選擇字段應該是一個二元組序列。關於這點我可以做的不多。 – boatcoder 2011-03-27 18:25:54