在Python的变量赋值中使用条件

在Python的变量赋值中使用条件,python,variable-assignment,Python,Variable Assignment,我想在Python中的变量赋值中使用条件,就像在C#中一样 我发现Python有这种属性 num1 = (20 if someBoolValue else num1) 但我不知道在我的情况下它是如何工作的。 可以在Python中执行类似操作吗?是的,可以: myLang = 'en' if lang == 'en' else 'de' if lang == 'ger' else 'fa' 单个条件表达式的真表达式和假表达式只是多个表达式。您可以在该位置放置另一个条件表达式 如果这样更易于阅读

我想在Python中的变量赋值中使用条件,就像在C#中一样

我发现Python有这种属性

num1 = (20 if someBoolValue else num1)
但我不知道在我的情况下它是如何工作的。 可以在Python中执行类似操作吗?

是的,可以:

myLang = 'en' if lang == 'en' else 'de' if lang == 'ger' else 'fa'
单个条件表达式的真表达式和假表达式只是多个表达式。您可以在该位置放置另一个条件表达式

如果这样更易于阅读,您可以在表达式周围加上括号,以便直观地对它们进行分组。Python不需要这些,因为条件表达式有一个;只有
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
值在映射中,使用。

将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”。

谢谢“de”这个词。我编辑了我的问题。get(lang,'fa')表示如果lang不在
langmap
中,那么
lang='fa'
?@AlexJolig:
myLang
,但这是更全面的答案。非常感谢。
langmap = {
  'en': 'en',
  'ger': 'ge'
}

 ...
myLang = langmap.get(lang, 'fa')
 ...