pythonic方式结合了很多startwith语句

时间:2015-03-17 21:13:51

标签: python python-3.x startswith

什么是" pythonic"结合很多startswith语句的方法?

以下是详细信息:
我从服务器接收各种类型的消息,它们使用不同的第一个字母发送它们,以便接收器快速识别和排序它们。我写了很多代码

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

- 喜欢陈述。但是,我觉得有更多的pythonic方法来编写没有很多语句的代码,比如可能列出所有可能的首字母并且有一个startswith语句。

if message[0]=='A'的其他变体甚至更好,因为它似乎每this更快,速度对我很重要。

1 个答案:

答案 0 :(得分:9)

使用字典将第一个字母映射到函数:

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

Python中的函数是第一类对象,因此您可以将它们存储在这样的字典中。

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