我有一个选择字段,其中有一个元组列表:
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
如果您只需要进行一次查找,则可以对其进行迭代
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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。