如何修复Python dict.get()返回键值后返回默认值?

问题描述 投票:1回答:1

当我尝试输入例如“帮助移动”此代码将相应的帮助消息打印为“移动”和默认值。但是如果我理解dict.get(key [,value])的权利,那么只有当密钥(例如“run”而不是“move”)不在字典中时才会出现默认值。

我试图检查我的密钥是否为字符串且没有空格。不知道是什么/怎么检查别的。

#!/usr/bin/env python3
def show_help(*args):
    if not args:
        print('This is a simple help text.')
    else:
        a = args[0][0]       
        str_move = 'This is special help text.'

        help_cmd = {"movement" : str_move, "move" : str_move, 
            "go" : str_move}
        #print(a)  # print out the exact string
        #print(type(a))  # to make sure "a" is a string (<class 'str'>)
        print(help_cmd.get(a), 'Sorry, I cannot help you.')

commands = {"help" : show_help, "h" : show_help}

cmd = input("> ").lower().split(" ")  # here comes a small parser for user input
try:
    if len(cmd) > 1:
        commands[cmd[0]](cmd[1:])
    else:
        commands[cmd[0]]()
except KeyError:
    print("Command unkown.")

如果我输入qazxsw poi,我会猜测输出qazxsw poi,但实际输出是This is a special help text.

python-3.x string dictionary output default
1个回答
1
投票

问题的关键在于:

help move

您的默认值超出了get的调用范围,因此它不是默认值并且正在连接。要将其作为默认值,请修改为:

This is special help text. Sorry, I cannot help you with "move".
© www.soinside.com 2019 - 2024. All rights reserved.