在 Python 的变量赋值中使用条件
Using conditions in variable assignments in Python
我想在 Python 的变量赋值中使用条件,就像我在 C# 中那样。
myLang = lang=='en' ? 'en' : lang=='ger' ? 'de' : 'fa';
我发现 this question 说 Python 有这种分配。
num1 = (20 if someBoolValue else num1)
但我不知道它在我的情况下是如何工作的。
是否可以在 Python 中做类似的事情?
是的,有可能:
myLang = 'en' if lang == 'en' else 'de' if lang == 'ger' else 'fa'
单个条件表达式的真假表达式只是更多的表达式。你可以在那个地方放另一个条件表达式。
如果这样更容易阅读,您可以在表达式周围加上括号,以便在视觉上对它们进行分组。 Python 不需要这些,因为条件表达式有一个 very low operator precedence;只有 lambda
较低。
加上括号,它将显示为:
myLang = 'en' if lang == 'en' else ('de' if lang == 'ger' else 'fa')
不过,有更好的方法可以将 lang
映射到两个字符的字符串。使用字典,例如:
language_mapping = {'en': 'en', 'ger': 'de'}
myLang = language_mapping.get(lang, 'fa')
将默认为 'fa'
除非 lang
值在映射中,使用 dict.get()
method.
C#代码解释为:
myLang = lang=='en' ? 'en' : (lang=='ger' ? 'ge' : 'fa');
所以对 Python 做同样的事情:
myLang = 'en' if lang=='en' else ('ge' if lang=='ger' else 'fa')
或不带括号:
myLang = 'en' if lang=='en' else 'ge' if lang=='ger' else 'fa'
在代码中执行此操作的问题在于它是硬编码的。改为在数据中执行。
langmap = {
'en': 'en',
'ger': 'ge'
}
...
myLang = langmap.get(lang, 'fa')
...
虽然德语的缩写是"de"(代表"deutsche"),而不是"ge"。
我想在 Python 的变量赋值中使用条件,就像我在 C# 中那样。
myLang = lang=='en' ? 'en' : lang=='ger' ? 'de' : 'fa';
我发现 this question 说 Python 有这种分配。
num1 = (20 if someBoolValue else num1)
但我不知道它在我的情况下是如何工作的。 是否可以在 Python 中做类似的事情?
是的,有可能:
myLang = 'en' if lang == 'en' else 'de' if lang == 'ger' else 'fa'
单个条件表达式的真假表达式只是更多的表达式。你可以在那个地方放另一个条件表达式。
如果这样更容易阅读,您可以在表达式周围加上括号,以便在视觉上对它们进行分组。 Python 不需要这些,因为条件表达式有一个 very low operator precedence;只有 lambda
较低。
加上括号,它将显示为:
myLang = 'en' if lang == 'en' else ('de' if lang == 'ger' else 'fa')
不过,有更好的方法可以将 lang
映射到两个字符的字符串。使用字典,例如:
language_mapping = {'en': 'en', 'ger': 'de'}
myLang = language_mapping.get(lang, 'fa')
将默认为 'fa'
除非 lang
值在映射中,使用 dict.get()
method.
C#代码解释为:
myLang = lang=='en' ? 'en' : (lang=='ger' ? 'ge' : 'fa');
所以对 Python 做同样的事情:
myLang = 'en' if lang=='en' else ('ge' if lang=='ger' else 'fa')
或不带括号:
myLang = 'en' if lang=='en' else 'ge' if lang=='ger' else 'fa'
在代码中执行此操作的问题在于它是硬编码的。改为在数据中执行。
langmap = {
'en': 'en',
'ger': 'ge'
}
...
myLang = langmap.get(lang, 'fa')
...
虽然德语的缩写是"de"(代表"deutsche"),而不是"ge"。