python - 为什么 Django 使用元组的元组来存储静态字典,我应该这样做吗?

标签 python django performance dictionary tuples

为什么 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/

相关文章:

python - 如何从外部使用 python 脚本在 mininet 提示符内运行命令

python - 静态文件不起作用 : Not Found:/{static 'logo.png' }

Javascript 秒表性能

javascript - 在 JavaScript 中可以实现数组减法的最快数量级是多少?

django - 如何在 Django 数据迁移上下文中访问模型的自定义管理器?

javascript - 有选择地激活特定页面的通用 jQuery/javascript 模块的最简单方法?

python - 如何在 python/pandas 的循环中迭代使用变量名

python - 使用 numpy.char 函数需要哪些 numpy 结构作为输入?

python - 我的包含 send_file() 的函数似乎没有更新

django - 使用 django 的基本登录时,有没有办法让 Angular 获取当前用户