python - 条件变量的更多pythonic方式

标签 python if-statement

<分区>

这就是我想要做的:

  1. 很少争论
  2. 根据参数,形成一个字符串
  3. 返回字符串

但是,为此,我可以看到 3 种可能的方法:

def form_statement(subject, verb, object):
    greetings = ""
    if subject in ("Paul", "Raj"):
        greetings = "mister"
    return "%s %s %s %s" % (subject, verb, object, greetings)

第二种方法是:

def form_statement(subject, verb, object):
    if subject in ("Paul", "Raj"):
        greetings = "mister"
    else:
        greetings = ""
    return "%s %s %s %s" % (subject, verb, object, greetings)

第三种方式是:

def form_statement(subject, verb, object):
    greetings = "mister" if subject in ("Paul", "Raj") else ""
    return "%s %s %s %s" % (subject, verb, object, greetings)

有没有其他更好的方法来做这样的事情?现在我选择第一种方式,因为获取问候字符串的“处理”本身就是一个函数,并且在使用第三种方式时使该行超过 80 个字符。

编辑:似乎有些人对我问哪个更好用感到困惑(因为他们根据意见投票)。在这里,我试图找到是否有更好的方法来做,并举例说明我可以想到哪些事情,以便其他人可能不会将它们作为答案。正如其中一个答案中提到的,我发现在类似情况下使用字典对我来说更好。

最佳答案

一种 pythonic 方法是使用字典来保存主题及其相关的 greetings,然后使用 dict.get() 方法,该方法也接受第二个参数,它将是如果您的字典中缺少键,则返回。

main_dict = {"Paul":"mister", "Raj": "mister"}

def form_statement(main_dict, subject, verb, object):
    greetings = main_dict.get(subject, '')
    return "{} {} {} {}".format(subject, verb, object, greetings)

当您处理更大的数据集时,这种方法将显示出它的威力。因为字典使用哈希表并且它们的索引顺序是 O(1)。您还可以为每个动词使用不同的结果。

关于python - 条件变量的更多pythonic方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36330957/

相关文章:

python - 在 SQLAlchemy 中使用 cdecimal

if-statement - 使用接口(interface)时检查变量类型是否为零

java - 将这些口头规则转化为条件

c - 在 C 中使用带有 if else 的 switch 的简单计算器

Javascript:将对象解压缩为函数参数

python - Django super 用户无权删除模型

python - 在azure webjobs中运行多个文件中的一个文件

javascript - 无法使用 python cgi 将 javascript 发送的文本写入 .txt 文件

java - 嵌套 If 语句

php - 如何正确格式化 PHP 'IF ELSE' 语句?