Skip to main content
 首页 » 编程设计

结合大量 startswith 语句的 pythonic 方式

2025年05月04日12myhome

组合大量 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 异常。