我正在与API通信,每次发送请求时,都会返回一个状态消息列表。我还有一个数据库,用来记录每个请求。对于每个请求,我的db表都有一行,我希望有一列用于返回的状态消息。API总共可以返回15条消息,我正在考虑对它们进行编码,这样我就不会存储我收到的所有消息的一个巨大字符串,比如“message1+message2+message3+message4…”
我知道我可以做如下操作,这样我就可以存储像“a,B,C,D…”这样的字符串,但使用15个elif似乎设计得不好:
def request_sent(self,some_list):
codeCombo = ''
for message in some_list:
code = self.get_log_code(message)
codeCombo = codeCombo + ',' + code
//store codeCombo in db
def get_log_code(status_message):
if status_message == 'ORDER_COMPLETE':
return 'A'
elif status_message == 'ORDER_FAILED':
return 'B'
elif status_message == 'INSUFFICIENT_FUNDS':
return 'C'
elif status_message == 'SYSTEM_BUSY':
return 'D'
...
有没有更好的办法
我很想知道二进制方法是否有效。如果我有一个15位的二进制值,它的所有位最初都设置为零。每一位代表一条状态信息。当状态消息出现时,它表示的位值将切换为1
一个经典的方法是使用字典
注意检查(
if status_message in messages:
),以防有我们不知道的消息。API有一个令人讨厌的习惯,即发送未记录的消息正是格雷格·K。说。您可以将它们作为键/值对存储在字典中
例如:
最简单、最快的方法是将所有回复存储在字典中:
您可以简单地将函数修改为以下内容:
相关问题 更多 >
编程相关推荐