组合大量 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 中的函数是一等对象,因此您可以像这样将它们存储在字典中。
请注意,我使用切片来获取第一个字符;如果 message 恰好为空,它会生成一个空字符串,而不是抛出 IndexError 异常。
