开发者社区> 问答> 正文

在元组的字典上逆向查找的最有效方式是什么?

我有一个选择字段,其中有一个元组列表:

EVENT_CHOICES = [(1, "queued"), (2, "sent"), (3, "failed")]

由于性能原因,它存储为“ PositiveSmallIntegerField”而不是“ CharField”:

event_type = models.PositiveSmallIntegerField(choices=EVENT_TYPE_CHOICES)

在我的应用程序中,该字段由Webhook填充到外部源,该源将元组的str组件POST。例如,我将队列发送失败作为POST变量。

在“ EVENT_CHOICES”上反向查找以从“ str”返回“ int”的最简单/最有效的方法是什么?

例如,笨拙的长格式将是:

if event == "queued":
   event_type = 1
if event == "sent":
   event_type = 2
if event == "failed":
   event_type = 3

考虑到我实际上有很多选择,我认为必须有一个更整洁的方法吗?

问题来源:stackoverflow

展开
收起
is大龙 2020-03-24 14:31:42 388 0
1 条回答
写回答
取消 提交回答
  • 如果您只需要进行一次查找,则可以对其进行迭代

    def get_idx(choice):
        for idx,evt in EVENT_CHOICES:
            if evt == choice:
               return idx
    

    或者如果您打算做多次以上,则应创建一个反向字典

    dataReversed = {choice:idx for idx,choice in EVENT_CHOICES}
    dataReversed.get('queued')
    

    回答来源:stackoverflow

    2020-03-24 14:34:00
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载