【发布时间】:2019-03-20 08:00:38
【问题描述】:
比How to implement conditional string formatting?更进一步
基本上:是否可以在格式字符串中添加if、elif....else?
l = ['it', 'en', 'es']
for i in l:
print('{tit}'.format(tit='Ciao' if i == 'it' elif i == 'en' tit='Hi' else 'Hola'))
【问题讨论】:
-
这会更有意义
{'it': 'Ciao', 'en': ...}。虽然可以使用内联if表达式,您甚至可以将其链接以模拟elif之类的东西,但这是一个无法维护的疯狂结构。 -
我的一般工作流程要像你建议的那样拥有一本字典更复杂。为什么疯了?
-
如果您的工作流程如此复杂,为什么要在一行中完成所有工作?
-
看看它,它是不可读的(实际工作的等价物也好不了多少)。此外,每次您可以向
l添加一个项目时,您需要在代码中使用此类内容的任何地方继续添加该已经不可读的表达式。这就是为什么最好先定义一个像dict这样的东西,其中一起定义的数据一起定义,其余的是一个通用算法,不需要硬编码到if i == 'it' …。即使您的实际情况更复杂,有肯定有遵循这种更好模式的解决方案。 -
好的,那么我将重构代码。感谢您的建议