如何在python字典中有条件值?
我有一个像这样的python字典:
{
"addressLineOne": self.ADDRESS_1,
"addressType": "RESIDENTIAL",
"city": self.CITY,
"countryCode": "USA",
"email": self.EMAIL,
"firstName": self.FIRST_NAME,
"state": self.STATE
}
我希望一些值以我目前正在做的方式为条件,如下所示:
if self.login:
data = {"addressLineOne": self.ADDRESS_1,
"addressType": "RESIDENTIAL",
"city": self.CITY,
"countryCode": "USA",
"state": self.STATE}
else:
data = {"addressLineOne": self.ADDRESS_1,
"addressType": "RESIDENTIAL",
"city": self.CITY,
"countryCode": "USA",
"email": self.EMAIL,
"firstName": self.FIRST_NAME,
"state": self.STATE}
有没有更整洁的方法来做到这一点,所以我不需要两次编写字典,例如在字典中包含一个 if/else 语句?
回答
对于您的特定情况,该else部分只是添加键。因此,使用共享的字典初始化字典,并添加带有条件的附加内容。就像是:
data = {"addressLineOne": self.ADDRESS_1,
"addressType": "RESIDENTIAL",
"city": self.CITY,
"countryCode": "USA",
"state": self.STATE}
if not self.login:
data.update({"email": self.EMAIL,
"firstName": self.FIRST_NAME})
回答
我偶尔会写一些类似的东西
data = {
'this': that,
'foo': bar,
**({'cond1': 17, cond2: 'xyzzy'} if new_moon() else {})
}
但我会把它留给别人来决定它是否有意义......