为什么 django 使用元组的元组来存储 choices
而不是标准的字典?
例子:
ORGINAL_MARKET = 1
SECONDARY_MARKET = 2
MARKET_CHOICES = (
(ORGINAL_MARKET, _('Orginal Market')),
(SECONDARY_MARKET, _('Secondary Market')),
)
当我知道 dict 不会及时更改时,我应该这样做吗? 我认为元组速度更快,但如果当我尝试获取值时仍需要将其转换为字典才能找到它,这有关系吗?
更新:
澄清一下,如果我将它用作元组的元组,我将使用它获得值(value)
dict(self.MARKET_CHOICES)[self.ORGINAL_MARKET]
哪个会更快,这个还是从一开始就在字典中存储值?
最佳答案
主要原因是保留了顺序。例如,如果您使用字典并调用 .items()
为 ChoiceField
提供选择,则选择框中的项目排序将不可靠当您呈现表单时。
如果你想要 dict,很容易从元组的元组中创建一个,格式已经被构造函数接受,所以你只需调用 dict()
就可以了。
我不认为不变性是一个正确的理由——它们并不是严格意义上的元组元组,元组列表甚至列表列表在 Django 中也可以工作。
关于python - 为什么 Django 使用元组的元组来存储静态字典,我应该这样做吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23518552/