比较python中字符串的最快方法

Mik*_*cic 8 python regex parsing

我正在用Python编写一个脚本,允许用户输入一个字符串,该字符串将指示脚本执行特定操作.为了争论,我会说我的命令列表是:

lock
read
write
request
log
Run Code Online (Sandbox Code Playgroud)

现在,我希望用户能够输入单词"log",它将执行特定操作,这非常简单.但是,我想匹配部分词.因此,例如,如果用户输入"lo",它应该匹配"lock",因为它在列表中更高.我已经尝试使用ccpes从libc中使用strncmp来实现这一目标,但还没有做出正面或反面.

Ned*_*der 16

如果您接受用户的输入,那么为什么您担心比较的速度?即使是最慢的技术也会比用户能够察觉的快得多.使用最简单,最容易理解的代码,并为紧密内循环留下效率问题.

cmds = [
    "lock",
    "read",
    "write",
    "request",
    "log",
    ]

def match_cmd(s):
    matched = [c for c in cmds if c.startswith(s)]
    if matched:
        return matched[0]
Run Code Online (Sandbox Code Playgroud)


Joh*_*hin 5

这将做你想要的:

def select_command(commands, user_input):
    user_input = user_input.strip().lower()
    for command in commands:
        if command.startswith(user_input):
            return command
    return None
Run Code Online (Sandbox Code Playgroud)

然而:

你似乎对错误的事情感到沮丧.所以50个用户意味着50毫秒 - 你不会因为那种"滞后"而逃离城镇.担心低效的数据库访问或用户输入"r"并在他们认为"请求"时获得"读取"而导致的问题.最大限度地减少用户击键的风险是20世纪60年代,这是不好笑的.他们在用什么?ASR33电传?至少你可以坚持一个独特的匹配 - "rea"用于读取和"req"请求.