一行分配,比较和使用值

时间:2019-01-03 21:49:01

标签: python python-3.x if-statement

当前代码:

error = dict.get("error", None)
if error:
    print(error)

是否可以将其放在一行上,例如:

print(error) if (error = dict.get("error", None))

在C语言中,您可以分配一个值,然后进行比较,然后将其打印在一行上:

if (a = 5) printf("%d",a);

4 个答案:

答案 0 :(得分:1)

您可以使用dict.get(key,default)print()并使用三元告诉print("" if not d.get("error") else d["error"])end=""来避免/使用换行符,而不必使用三进制的end="\n"

d = {"error": "plenty"}  

print( d.get("error",""), end = "\n" if d.get("error","") else "")

如果密钥不存在,则此命令不打印任何内容(由于end=""也不会打印换行符。)

请参见Why dict.get(key) instead of dict[key]?

答案 1 :(得分:1)

在Python 3.8中,您将能够编写

if error := dict.get("error", None):
    print(error)

Python没有Perl样式的语句修饰符,但是由于print是一个函数,因此您可以编写类似

的表达式语句
print(error) if (error := dict.get("error", None)) else None

尽管我不推荐。 (实际上,我不能完全确定PEP-572定义的赋值表达式是否与条件表达式交互。我还没有使用任何引用实现对其进行测试,但是我相信error会在整个表达式。)


像这样的简单if语句,但是, 可以写在一行上(尽管再次,我不推荐这样做; PEP-8明显不赞成

if error := dict.get('error', None): print(error)

答案 2 :(得分:0)

在答案here的基础上,您可以使用分号填充多个表达式。像

error = my_dict.get("error", None); print(error) if error is not None else None

应该可以,但是我在手机上打字并且无法测试。

答案 3 :(得分:0)

您可以简单地使用if else提供的内联python

print('error') if dict.get("error") else 0

那!希望对您有所帮助:)