结合大量 startswith 语句的 pythonic 方式

pythonic way to combine a lot of startswith statements

合并大量 startswith 语句的 "pythonic" 方法是什么?

详情如下:
我从服务器收到各种类型的消息,服务器以不同的首字母发送它们,以便接收者快速识别和排序它们。我写的代码有很多

if message.startswith('A'):
   do_A()
elif message.startswith('B'):
   do_B()

- 类似的陈述。但是,我觉得有更多的 pythonic 方法可以在没有很多语句的情况下编写代码,比如列出所有可能的首字母并有一个 startswith 语句。

带有 if message[0]=='A' 的其他变体甚至更好,因为它看起来比 this 更快,速度对我来说很重要。

使用字典将首字母映射到函数:

message_map = {'A': do_A, 'B': do_B}
dispatch = message_map.get(message[:1])
if dispatch is not None:
    dispatch()

Python 中的函数是 first-class 个对象,因此您可以像这样将它们存储在字典中。

请注意,我使用切片来获取第一个字符;如果 message 恰好为空,它会生成一个空字符串,而不是抛出 IndexError 异常。